Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision f761f38e

Von Max Wessendorf vor 10 Monaten hinzugefügt

  • ID f761f38e73f5e2c735e65c85012376c6f8600f66
  • Vorgänger 0dbd808d
  • Nachfolger 92a55733

HTML und PDF Doku updated

Unterschiede anzeigen:

doc/html/ch02s02.html
5 5
        diese Version im speziellen auf Debian und Ubuntu, grundsätzlich wurde
6 6
        bei der Auswahl der Pakete aber darauf Rücksicht genommen, dass es
7 7
        ohne große Probleme auf den derzeit aktuellen verbreiteten
8
        Distributionen läuft.</p><p>Mitte 2020 (ab Version 3.5.6) empfehlen wir:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Debian</p><div class="itemizedlist"><ul class="itemizedlist" type="circle"><li class="listitem"><p>10.0 "Buster"</p></li><li class="listitem"><p>11.0 "Bullseye"</p></li></ul></div></li><li class="listitem"><p>20.04 "Focal Fossa" LTS
9
          </p></li><li class="listitem"><p>openSUSE Leap 15.x und SUSE Linux Enterprise Server 15 GA</p></li><li class="listitem"><p>Fedora 29</p></li></ul></div></div><div class="sect2" title="2.2.2. Benötigte Perl-Pakete installieren"><div class="titlepage"><div><div><h3 class="title"><a name="Pakete"></a>2.2.2. Benötigte Perl-Pakete installieren</h3></div></div></div><p>Zum Betrieb von kivitendo werden zwingend ein Webserver (meist
8
        Distributionen läuft.</p><p>Anfang 2024 (ab Version 3.5.6) empfehlen wir:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Debian</p><div class="itemizedlist"><ul class="itemizedlist" type="circle"><li class="listitem"><p>11.0 "Bullseye"</p></li><li class="listitem"><p>12.0 "Bookworm"</p></li></ul></div></li><li class="listitem"><p>Ubuntu</p><div class="itemizedlist"><ul class="itemizedlist" type="circle"><li class="listitem"><p>20.04 "Focal Fossa" LTS</p></li><li class="listitem"><p>22.04 "Jammy Jellyfish" LTS</p></li></ul></div></li><li class="listitem"><p>openSUSE Leap 15.x und SUSE Linux Enterprise Server 15 GA</p></li><li class="listitem"><p>Fedora 29</p></li></ul></div></div><div class="sect2" title="2.2.2. Benötigte Perl-Pakete installieren"><div class="titlepage"><div><div><h3 class="title"><a name="Pakete"></a>2.2.2. Benötigte Perl-Pakete installieren</h3></div></div></div><p>Zum Betrieb von kivitendo werden zwingend ein Webserver (meist
10 9
        Apache) und ein Datenbankserver (PostgreSQL) in einer aktuellen
11 10
        Version (s.a. Liste der unterstützten Betriebssysteme)
12 11
        benötigt.</p><p>Zusätzlich benötigt kivitendo einige Perl-Pakete, die nicht
13 12
        Bestandteil einer Standard-Perl-Installation sind. Um zu überprüfen,
14 13
        ob die erforderlichen Pakete installiert und aktuell genug sind, wird
15
        ein Script mitgeliefert, das wie folgt aufgerufen wird:</p><pre class="programlisting">./scripts/installation_check.pl</pre><p>Die vollständige Liste der benötigten Perl-Module lautet:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>
14
        ein Script mitgeliefert, das wie folgt aufgerufen wird:</p><pre class="programlisting">./scripts/installation_check.pl</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"><a name="List-Moreutils"></a>Anmerkung</th></tr><tr><td align="left" valign="top"><p>Das Paket <code class="literal">List::MoreUtils</code> wird benötigt um das Script ausführen zu können!</p></td></tr></table></div><p>Die vollständige Liste der benötigten Perl-Module lautet:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>
16 15
                     <code class="literal">Algorithm::CheckDigits</code>
17 16
                  </p></li><li class="listitem"><p>
18 17
                     <code class="literal">Archive::Zip</code>
......
156 155
        <code class="literal">Net::SSLGlue</code>.</p><p>Gegenüber Version 2.6.0 sind zu dieser Liste 2 Pakete
157 156
        hinzugekommen, <code class="literal">URI</code> und
158 157
        <code class="literal">XML::Writer</code> sind notwendig. Ohne startet kivitendo
159
        nicht.</p><p>Gegenüber Version 2.6.1 sind <code class="literal">parent</code>,
160
        <code class="literal">DateTime</code>, <code class="literal">Rose::Object</code>,
161
        <code class="literal">Rose::DB</code> und <code class="literal">Rose::DB::Object</code>
162
        neu hinzugekommen. <code class="literal">IO::Wrap</code> wurde entfernt.</p><p>Gegenüber Version 2.6.3 ist <code class="literal">JSON</code> neu
158
        nicht.</p><p>Gegenüber Version 2.6.3 ist <code class="literal">JSON</code> neu
163 159
        hinzugekommen.</p><p>
164 160
               <code class="literal">Email::Address</code> und
165
        <code class="literal">List::MoreUtils</code> sind schon länger feste
166
        Abhängigkeiten, wurden aber bisher mit kivitendo mitgeliefert. Beide
167
        sind auch in 2.6.1 weiterhin mit ausgeliefert, wurden in einer
168
        zukünftigen Version aber aus dem Paket entfernt werden. Es wird
161
        <code class="literal">List::MoreUtils</code> wurden aus dem Lieferumfang entfernt. Es wird
169 162
        empfohlen diese Module zusammen mit den anderen als Bibliotheken zu
170
        installieren.</p><div class="sect3" title="2.2.2.1. Debian und Ubuntu"><div class="titlepage"><div><div><h4 class="title"><a name="d0e649"></a>2.2.2.1. Debian und Ubuntu</h4></div></div></div><p>Für Debian und Ubuntu stehen die meisten der benötigten
163
        installieren.</p><p>Gegenüber Version 2.6.1 sind <code class="literal">parent</code>,
164
        <code class="literal">DateTime</code>, <code class="literal">Rose::Object</code>,
165
        <code class="literal">Rose::DB</code> und <code class="literal">Rose::DB::Object</code>
166
        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="d0e662"></a>2.2.2.1. Debian und Ubuntu</h4></div></div></div><p>Für Debian und Ubuntu stehen die meisten der benötigten
171 167
          Pakete als Debian-Pakete zur Verfügung. Sie können mit
172 168
          folgendem Befehl installiert werden:</p><pre class="programlisting">apt install  apache2 libarchive-zip-perl libclone-perl \
173 169
  libconfig-std-perl libdatetime-perl libdbd-pg-perl libdbi-perl \
......
189 185
  libimager-perl libimager-qrcode-perl librest-client-perl libipc-run-perl
190 186
          </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:
191 187
</p><pre class="programlisting">add-apt-repository universe</pre><p>
192
                  </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="d0e664"></a>2.2.2.2. Fedora</h4></div></div></div><p>Für Fedora stehen die meisten der benötigten Perl-Pakete als
188
                  </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="d0e677"></a>2.2.2.2. Fedora</h4></div></div></div><p>Für Fedora stehen die meisten der benötigten Perl-Pakete als
193 189
          RPM-Pakete zur Verfügung. Sie können mit folgendem Befehl
194 190
          installiert werden:</p><pre class="programlisting">dnf install httpd mod_fcgid postgresql-server postgresql-contrib\
195 191
  perl-Algorithm-CheckDigits perl-Archive-Zip perl-CPAN perl-Class-XSAccessor \
......
201 197
  perl-Params-Validate perl-Regexp-IPv6 perl-Rose-DB perl-Rose-DB-Object \
202 198
  perl-Rose-Object perl-Sort-Naturally perl-String-ShellQuote \
203 199
  perl-Template-Toolkit perl-Text-CSV_XS perl-Text-Iconv perl-URI perl-XML-Writer \
204
  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="d0e671"></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 \
200
  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="d0e684"></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 \
205 201
  http://download.opensuse.org/repositories/Application:/ERP:/kivitendo/15.4/ \
206 202
  "OSS-15.4-App_ERP_kivitendo"</pre><p>Das ERP kivitendo Evaluation Repository:</p><pre class="programlisting">zypper addrepo -f -p 90 \
207 203
  http://download.opensuse.org/repositories/Application:/ERP:/kivitendo:/eval/15.4/ \
208
  "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="d0e727"></a>2.2.3. Andere Pakete installieren</h3></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>
204
  "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="d0e740"></a>2.2.3. Andere Pakete installieren</h3></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>
209 205
                     <code class="literal">poppler-utils</code> 'pdfinfo' zum Erkennen der Seitenanzahl bei der PDF-Generierung</p></li><li class="listitem"><p>
210 206
                     <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>
211 207
            </p><p>Fedora: </p><pre class="programlisting">dnf install poppler-utils postgresql-contrib</pre><p>
doc/html/ch02s07.html
1 1
<html><head>
2 2
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
3
   <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.8.0: 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="d0e1261"></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
3
   <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.8.0: 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="d0e1274"></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
4 4
          mittels FastCGI/FCGI. Die Einrichtung wird ausführlich im Abschnitt
5 5
          <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
6 6
        Webserverkonfigurationsdatei <code class="literal">httpd.conf</code> eingestellt
......
104 104
Alias       /url/for/kivitendo-erp-fcgid/          /path/to/kivitendo-erp/</pre><p>Dann ist unter <code class="filename">/url/for/kivitendo-erp/</code>
105 105
          die normale Version erreichbar, und unter
106 106
          <code class="constant">/url/for/kivitendo-erp-fcgid/</code> die
107
          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="d0e1415"></a>2.7.3. Authentifizierung mittels HTTP Basic Authentication</h3></div></div></div><p>
107
          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="d0e1428"></a>2.7.3. Authentifizierung mittels HTTP Basic Authentication</h3></div></div></div><p>
108 108
        Kivitendo unterstützt, dass Benutzerauthentifizierung über den Webserver mittels des »Basic«-HTTP-Authentifizierungs-Schema erfolgt
109 109
        (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
110 110
        mitgeschickte Header <code class="constant">Authorization</code> vom Webserver an Kivitendo über die Umgebungsvariable
111 111
        <code class="constant">HTTP_AUTHORIZATION</code> weitergegeben wird, was standardmäßig nicht der Fall ist. Für Apache kann dies über die
112 112
        folgende Konfigurationsoption aktiviert werden:
113
       </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="d0e1431"></a>2.7.4. Aktivierung von mod_rewrite/directory_match für git basierte Installationen</h3></div></div></div><p>
113
       </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="d0e1444"></a>2.7.4. Aktivierung von mod_rewrite/directory_match für git basierte Installationen</h3></div></div></div><p>
114 114
        Aufgrund von aktuellen (Mitte 2020) Sicherheitswarnungen für git basierte Webanwendungen ist die mitausgelieferte .htaccess
115 115
        restriktiver geworden und verhindert somit das Auslesen von git basierten Daten.
116 116
        Für debian/ubuntu muss das Modul mod_rewrite einmalig so aktiviert werden:
......
125 125
          Require all denied
126 126
        &lt;/DirectoryMatch&gt;</pre><p>
127 127
       
128
            </p></div><div class="sect2" title="2.7.5. Weitergehende Konfiguration"><div class="titlepage"><div><div><h3 class="title"><a name="d0e1445"></a>2.7.5. Weitergehende Konfiguration</h3></div></div></div><p>Für einen deutlichen Sicherheitsmehrwert sorgt die Ausführung
128
            </p></div><div class="sect2" title="2.7.5. Weitergehende Konfiguration"><div class="titlepage"><div><div><h3 class="title"><a name="d0e1458"></a>2.7.5. Weitergehende Konfiguration</h3></div></div></div><p>Für einen deutlichen Sicherheitsmehrwert sorgt die Ausführung
129 129
        von kivitendo nur über https-verschlüsselten Verbindungen, sowie
130 130
        weiteren Zusatzmassnahmen, wie beispielsweise Basic Authenticate. Die
131 131
        Konfigurationsmöglichkeiten sprengen allerdings den Rahmen dieser
132 132
        Anleitung, hier ein Hinweis auf einen entsprechenden <a class="ulink" href="http://redmine.kivitendo-premium.de/boards/1/topics/142" target="_top">Foreneintrag
133 133
        (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">
134
        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="d0e1456"></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.
134
        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="d0e1469"></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.
135 135
  Organisatorisch empfehlen wir hier die enge Zusammenarbeit mit einem kivitendo Partner der auch in der
136 136
Lage ist weiterführende Fragen in Bezug auf Datenschutz und Datensicherheit zu beantworten.
137 137
Unabhängig davon empfehlen wir im Webserver Bereich die Aktivierung und Konfiguration des Moduls modsecurity für den Apache2, damit
doc/html/ch02s08.html
44 44
        Links aus einem der Runlevel-Verzeichnisse heraus in den Boot-Prozess
45 45
        einzubinden. Da das bei neueren Linux-Distributionen aber nicht
46 46
        zwangsläufig funktioniert, werden auch Start-Scripte mitgeliefert, die
47
        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="d0e1529"></a>2.8.3.1. SystemV-basierende Systeme (z.B. ältere Debian, ältere
47
        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="d0e1542"></a>2.8.3.1. SystemV-basierende Systeme (z.B. ältere Debian, ältere
48 48
          openSUSE, ältere Fedora)</h4></div></div></div><p>Kopieren Sie die Datei
49 49
          <code class="filename">scripts/boot/system-v/kivitendo-task-server</code>
50 50
          nach <code class="filename">/etc/init.d/kivitendo-task-server</code>. Passen
......
52 52
          <code class="literal">DAEMON=....</code>). Binden Sie das Script in den
53 53
          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
54 54
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
55
          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="d0e1558"></a>2.8.3.2. Upstart-basierende Systeme (z.B. Ubuntu bis 14.04)</h4></div></div></div><p>Kopieren Sie die Datei
55
          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="d0e1571"></a>2.8.3.2. Upstart-basierende Systeme (z.B. Ubuntu bis 14.04)</h4></div></div></div><p>Kopieren Sie die Datei
56 56
          <code class="filename">scripts/boot/upstart/kivitendo-task-server.conf</code>
57 57
          nach <code class="filename">/etc/init/kivitendo-task-server.conf</code>.
58 58
          Passen Sie in der kopierten Datei den Pfad zum Task-Server an (Zeile
59 59
          <code class="literal">exec ....</code>).</p><p>Danach kann der Task-Server mit dem folgenden Befehl gestartet
60
          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="d0e1576"></a>2.8.3.3. systemd-basierende Systeme (z.B. neure openSUSE, neuere
60
          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="d0e1589"></a>2.8.3.3. systemd-basierende Systeme (z.B. neure openSUSE, neuere
61 61
          Fedora, neuere Ubuntu und neuere Debians)</h4></div></div></div><p>Kopieren Sie die Datei
62 62
          <code class="filename">scripts/boot/systemd/kivitendo-task-server.service</code>
63 63
          nach <code class="filename">/etc/systemd/system/</code>. Passen Sie in der
doc/html/ch02s13.html
148 148
    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}).
149 149
    Dann hängt es davon ab, ob die Basisschriftart eine Serifenschriftart ist oder nicht.
150 150
    In jedem Fall wird die Änderung entweder in der <code class="filename">insettings.tex</code>, sofern sie für alle
151
    Mandant*innen gelten soll oder in der Mantant*innenspezifischen Konfigurationsdatei gsesetzt.</p><div class="sect5" title="2.13.2.10.1.1. Änderung, falls es ein Schriftpaket gibt"><div class="titlepage"><div><div><h6 class="title"><a name="d0e2796"></a>2.13.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.
152
        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.13.2.10.1.2. Änderung der Basisschriftart auf eine Schriftart mit Serifen"><div class="titlepage"><div><div><h6 class="title"><a name="d0e2801"></a>2.13.2.10.1.2. Änderung der Basisschriftart auf eine Schriftart mit Serifen</h6></div></div></div><pre class="programlisting">
153
      \setmainfont{|\meta{Name der Schriftart, z.B. SourceSerifPro}|}    </pre></div><div class="sect5" title="2.13.2.10.1.3. Änderung der Basisschriftart auf eine Schriftart ohne Serifen"><div class="titlepage"><div><div><h6 class="title"><a name="d0e2806"></a>2.13.2.10.1.3. Änderung der Basisschriftart auf eine Schriftart ohne Serifen</h6></div></div></div><pre class="programlisting">
151
    Mandant*innen gelten soll oder in der Mantant*innenspezifischen Konfigurationsdatei gsesetzt.</p><div class="sect5" title="2.13.2.10.1.1. Änderung, falls es ein Schriftpaket gibt"><div class="titlepage"><div><div><h6 class="title"><a name="d0e2809"></a>2.13.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.
152
        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.13.2.10.1.2. Änderung der Basisschriftart auf eine Schriftart mit Serifen"><div class="titlepage"><div><div><h6 class="title"><a name="d0e2814"></a>2.13.2.10.1.2. Änderung der Basisschriftart auf eine Schriftart mit Serifen</h6></div></div></div><pre class="programlisting">
153
      \setmainfont{|\meta{Name der Schriftart, z.B. SourceSerifPro}|}    </pre></div><div class="sect5" title="2.13.2.10.1.3. Änderung der Basisschriftart auf eine Schriftart ohne Serifen"><div class="titlepage"><div><div><h6 class="title"><a name="d0e2819"></a>2.13.2.10.1.3. Änderung der Basisschriftart auf eine Schriftart ohne Serifen</h6></div></div></div><pre class="programlisting">
154 154
      \setsansfont{|\meta{Name der Schriftart, z.B. SourceSansPro}|}
155 155
      \renewcommand*{\familydefault}{\sfdefault}    </pre></div></div><div class="sect4" title="2.13.2.10.2. Unterscheidungen durch String-Vergleich"><div class="titlepage"><div><div><h5 class="title"><a name="Unterscheidungen durch String-Vergleich"></a>2.13.2.10.2. Unterscheidungen durch String-Vergleich</h5></div></div></div><pre class="programlisting">
156 156
    \Ifstr{\lxmedia}{printer}{Falls gedruckt werden soll} {sonst}    </pre></div></div></div><div class="sect2" title="2.13.3. Der Druckvorlagensatz RB"><div class="titlepage"><div><div><h3 class="title"><a name="Vorlagen-RB"></a>2.13.3. Der Druckvorlagensatz RB</h3></div></div></div><p>Hierbei handelt es sich um einen vollständigen LaTeX
doc/html/ch02s14.html
5 5
      erzeugen. kivitendo kann dabei sowohl neue OpenDocument-Dokumente als
6 6
      auch aus diesen direkt PDF-Dateien erzeugen. Nachfolgend ist die
7 7
      Verwendung mit LibreOffice beschrieben. Für die Verwendung mit
8
      OpenOffice müssen die Einstellungen allenfalls angepasst werden.</p><div class="sect2" title="2.14.1. Grundeinstellung"><div class="titlepage"><div><div><h3 class="title"><a name="d0e2942"></a>2.14.1. Grundeinstellung</h3></div></div></div><p>Um die Unterstützung von OpenDocument-Vorlagen zu aktivieren,
8
      OpenOffice müssen die Einstellungen allenfalls angepasst werden.</p><div class="sect2" title="2.14.1. Grundeinstellung"><div class="titlepage"><div><div><h3 class="title"><a name="d0e2955"></a>2.14.1. Grundeinstellung</h3></div></div></div><p>Um die Unterstützung von OpenDocument-Vorlagen zu aktivieren,
9 9
        muss in der Datei <code class="filename">config/kivitendo.conf</code> die
10 10
        Variable <code class="literal">opendocument</code>, im Abschnitt
11 11
        <code class="literal">print_templates</code>, auf <code class="literal">1</code> stehen.
12
        Dies ist die Standardeinstellung.</p></div><div class="sect2" title="2.14.2. Direkte Erzeugung von PDF-Dateien"><div class="titlepage"><div><div><h3 class="title"><a name="d0e2959"></a>2.14.2. Direkte Erzeugung von PDF-Dateien</h3></div></div></div><p>Während die Erzeugung von reinen OpenDocument-Dateien keinerlei
12
        Dies ist die Standardeinstellung.</p></div><div class="sect2" title="2.14.2. Direkte Erzeugung von PDF-Dateien"><div class="titlepage"><div><div><h3 class="title"><a name="d0e2972"></a>2.14.2. Direkte Erzeugung von PDF-Dateien</h3></div></div></div><p>Während die Erzeugung von reinen OpenDocument-Dateien keinerlei
13 13
        weitere Software benötigt, wird zur Umwandlung dieser Dateien in PDF
14 14
        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
15 15
        <code class="filename">config/kivitendo.conf</code>, im Abschnitt
16 16
        <code class="literal">applications</code>, angepasst werden. Unter Debian sollte
17
        dies nicht notwendig sein.</p><div class="sect3" title="2.14.2.1. Variante 1)"><div class="titlepage"><div><div><h4 class="title"><a name="d0e2976"></a>2.14.2.1. Variante 1)</h4></div></div></div><p>In der Standardeinstellung wird LibreOffice für jedes Dokument
17
        dies nicht notwendig sein.</p><div class="sect3" title="2.14.2.1. Variante 1)"><div class="titlepage"><div><div><h4 class="title"><a name="d0e2989"></a>2.14.2.1. Variante 1)</h4></div></div></div><p>In der Standardeinstellung wird LibreOffice für jedes Dokument
18 18
          neu gestartet. Es ist keine weitere Konfiguration
19
          erforderlich.</p></div><div class="sect3" title="2.14.2.2. Variante 2)"><div class="titlepage"><div><div><h4 class="title"><a name="d0e2981"></a>2.14.2.2. Variante 2)</h4></div></div></div><p>Die zweite Variante startet ein LibreOffice, das auch nach der
19
          erforderlich.</p></div><div class="sect3" title="2.14.2.2. Variante 2)"><div class="titlepage"><div><div><h4 class="title"><a name="d0e2994"></a>2.14.2.2. Variante 2)</h4></div></div></div><p>Die zweite Variante startet ein LibreOffice, das auch nach der
20 20
          Umwandlung des Dokumentes gestartet bleibt. Bei weiteren
21 21
          Umwandlungen wird dann diese laufende Instanz benutzt. Der Vorteil
22 22
          ist, dass die Zeit zur Umwandlung möglicherweise reduziert wird,
......
29 29
          <code class="literal">python_uno_path</code> in der Konfigurationsdatei
30 30
          <code class="filename">config/kivitendo.conf</code> dienen zur Anpassung der
31 31
          Python uno Pfade. Unter Debian sollte keine Anpassung notwendig
32
          sein.</p></div></div><div class="sect2" title="2.14.3. Vorbereitungen"><div class="titlepage"><div><div><h3 class="title"><a name="d0e3010"></a>2.14.3. Vorbereitungen</h3></div></div></div><div class="sect3" title="2.14.3.1. Adminbereich"><div class="titlepage"><div><div><h4 class="title"><a name="opendocument-druckvorlagen-mit-makros.vorbereitungen"></a>2.14.3.1. Adminbereich</h4></div></div></div><p>Damit beim Erstellen von Rechnungen und Aufträgen neben der
32
          sein.</p></div></div><div class="sect2" title="2.14.3. Vorbereitungen"><div class="titlepage"><div><div><h3 class="title"><a name="d0e3023"></a>2.14.3. Vorbereitungen</h3></div></div></div><div class="sect3" title="2.14.3.1. Adminbereich"><div class="titlepage"><div><div><h4 class="title"><a name="opendocument-druckvorlagen-mit-makros.vorbereitungen"></a>2.14.3.1. Adminbereich</h4></div></div></div><p>Damit beim Erstellen von Rechnungen und Aufträgen neben der
33 33
          Standardvorlage ohne Einzahlungsschein weitere Vorlagen (z.B. mit
34 34
          Einzahlungsschein) auswählbar sind, muss für jedes Vorlagen-Suffix
35 35
          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
......
38 38
              Aufträgen oder Rechnungen als odt-Datei keine Bedeutung, darf
39 39
              aber nicht leer sein)</p></li><li class="listitem"><p>Vorlagenkürzel → besr bzw. selbst gewähltes Vorlagensuffix
40 40
              (muss genau der Zeichenfolge entsprechen, die zwischen
41
              "invoice_" bzw. "sales_order_" und ".odt" steht.)</p></li><li class="listitem"><p>speichern</p></li></ul></div></div><div class="sect3" title="2.14.3.2. Benutzereinstellungen"><div class="titlepage"><div><div><h4 class="title"><a name="d0e3037"></a>2.14.3.2. Benutzereinstellungen</h4></div></div></div><p>Wer den Ausdruck mit Einzahlungsschein als Standardeinstellung
41
              "invoice_" bzw. "sales_order_" und ".odt" steht.)</p></li><li class="listitem"><p>speichern</p></li></ul></div></div><div class="sect3" title="2.14.3.2. Benutzereinstellungen"><div class="titlepage"><div><div><h4 class="title"><a name="d0e3050"></a>2.14.3.2. Benutzereinstellungen</h4></div></div></div><p>Wer den Ausdruck mit Einzahlungsschein als Standardeinstellung
42 42
          im Rechnungs- bzw. Auftragsformular angezeigt haben möchte, kann
43 43
          dies persönlich für sich bei den Benutzereinstellungen
44 44
          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
45
              (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.14.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="d0e3061"></a>2.14.3.3. Auswahl der Druckvorlage in kivitendo beim Erzeugen einer
45
              (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.14.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="d0e3074"></a>2.14.3.3. Auswahl der Druckvorlage in kivitendo beim Erzeugen einer
46 46
          odt-Rechnung (analog bei Auftrag)</h4></div></div></div><p>Im Fussbereich der Rechnungsmaske muss neben Rechnung,
47 47
          OpenDocument/OASIS und Bildschirm die im Adminbereich erstellte
48 48
          Druckerbeschreibung ausgewählt werden, falls diese nicht bereits bei
49 49
          den Benutzereinstellungen als persönlicher Standard gewählt
50
          wurde.</p></div></div><div class="sect2" title="2.14.4. Schweizer QR-Rechnung mit OpenDocument Vorlagen"><div class="titlepage"><div><div><h3 class="title"><a name="d0e3066"></a>2.14.4. Schweizer QR-Rechnung mit OpenDocument Vorlagen</h3></div></div></div><p>Mit der Version 3.6.0 unterstützt Kivitendo die Erstellung von
50
          wurde.</p></div></div><div class="sect2" title="2.14.4. Schweizer QR-Rechnung mit OpenDocument Vorlagen"><div class="titlepage"><div><div><h3 class="title"><a name="d0e3079"></a>2.14.4. Schweizer QR-Rechnung mit OpenDocument Vorlagen</h3></div></div></div><p>Mit der Version 3.6.0 unterstützt Kivitendo die Erstellung von
51 51
        Schweizer QR-Rechnungen gemäss <a class="ulink" href="https://www.paymentstandards.ch/dam/downloads/ig-qr-bill-de.pdf" target="_top">Swiss
52 52
        Payment Standards, Version 2.2</a>. Implementiert sind hierbei die
53 53
        Varianten:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>
......
55 55
            QR-Referenz</strong></span>
56 56
                  </p></li><li class="listitem"><p>
57 57
                     <span class="bold"><strong>IBAN ohne Referenz</strong></span>
58
                  </p></li></ul></div><div class="sect3" title="2.14.4.1. Einstellungen"><div class="titlepage"><div><div><h4 class="title"><a name="d0e3087"></a>2.14.4.1. Einstellungen</h4></div></div></div><div class="sect4" title="2.14.4.1.1. Mandantenkonfiguration"><div class="titlepage"><div><div><h5 class="title"><a name="d0e3090"></a>2.14.4.1.1. Mandantenkonfiguration</h5></div></div></div><p>Unter <span class="emphasis"><em>System → Mandantenkonfiguration →
58
                  </p></li></ul></div><div class="sect3" title="2.14.4.1. Einstellungen"><div class="titlepage"><div><div><h4 class="title"><a name="d0e3100"></a>2.14.4.1. Einstellungen</h4></div></div></div><div class="sect4" title="2.14.4.1.1. Mandantenkonfiguration"><div class="titlepage"><div><div><h5 class="title"><a name="d0e3103"></a>2.14.4.1.1. Mandantenkonfiguration</h5></div></div></div><p>Unter <span class="emphasis"><em>System → Mandantenkonfiguration →
59 59
            Features</em></span>. Im Abschnitt <span class="emphasis"><em>Einkauf und
60 60
            Verkauf</em></span>, beim Punkt <span class="emphasis"><em>Verkaufsrechnungen mit
61 61
            Schweizer QR-Rechnung erzeugen</em></span>, die gewünschte Variante
62
            wählen.</p></div><div class="sect4" title="2.14.4.1.2. Konfiguration der Bankkonten"><div class="titlepage"><div><div><h5 class="title"><a name="d0e3104"></a>2.14.4.1.2. Konfiguration der Bankkonten</h5></div></div></div><p>Unter <span class="emphasis"><em>System → Bankkonten</em></span> muss bei
62
            wählen.</p></div><div class="sect4" title="2.14.4.1.2. Konfiguration der Bankkonten"><div class="titlepage"><div><div><h5 class="title"><a name="d0e3117"></a>2.14.4.1.2. Konfiguration der Bankkonten</h5></div></div></div><p>Unter <span class="emphasis"><em>System → Bankkonten</em></span> muss bei
63 63
            mindestens einem Bankkonto die Option <span class="emphasis"><em>Nutzung mit
64 64
            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
65 65
              QR-Referenz</strong></span> muss dieses Konto unter IBAN eine gültige
......
67 67
              unterscheidet sich von der regulären IBAN.</p><p>Zusätzlich muss eine gültige <span class="bold"><strong>Bankkonto
68 68
              Identifikationsnummer</strong></span> angegeben werden
69 69
              (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
70
            verwendet.</p></div><div class="sect4" title="2.14.4.1.3. Rechnungen ohne Betrag"><div class="titlepage"><div><div><h5 class="title"><a name="d0e3138"></a>2.14.4.1.3. Rechnungen ohne Betrag</h5></div></div></div><p>Für Rechnungen ohne Betrag (z.B. Spenden) kann, in der
70
            verwendet.</p></div><div class="sect4" title="2.14.4.1.3. Rechnungen ohne Betrag"><div class="titlepage"><div><div><h5 class="title"><a name="d0e3151"></a>2.14.4.1.3. Rechnungen ohne Betrag</h5></div></div></div><p>Für Rechnungen ohne Betrag (z.B. Spenden) kann, in der
71 71
            jeweiligen Rechnung, die Checkbox <span class="emphasis"><em>QR-Rechnung ohne
72 72
            Betrag</em></span> aktiviert werden. Diese Checkbox erscheint nur,
73 73
            wenn QR-Rechnungen in der Mandantenkonfiguration aktiviert sind
74 74
            (variante ausgewählt).</p><p>Dies wirkt sich lediglich auf den erzeugten QR-Code aus. Die
75
            Vorlage muss separat angepasst und ausgewählt werden.</p></div></div><div class="sect3" title="2.14.4.2. Adressdaten"><div class="titlepage"><div><div><h4 class="title"><a name="d0e3148"></a>2.14.4.2. Adressdaten</h4></div></div></div><p>Die Adressdaten zum Zahlungsempfänger werden aus der
75
            Vorlage muss separat angepasst und ausgewählt werden.</p></div></div><div class="sect3" title="2.14.4.2. Adressdaten"><div class="titlepage"><div><div><h4 class="title"><a name="d0e3161"></a>2.14.4.2. Adressdaten</h4></div></div></div><p>Die Adressdaten zum Zahlungsempfänger werden aus der
76 76
          Mandantenkonfiguration entnommen. Unter <span class="emphasis"><em>System →
77 77
          Mandantenkonfiguration → Verschiedenes</em></span>, Abschnitt
78 78
          <span class="emphasis"><em>Firmenname und -adresse.</em></span>
......
82 82
          z.B. "Schweiz" oder "CH".</p><p>Die Adressdaten können in der Vorlage mit den jeweiligen
83 83
          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>
84 84
               </p><p>Der erzeugte QR-Code verwendet Adress-Typ "K" (Kombinierte
85
          Adressfelder, 2 Zeilen).</p></div><div class="sect3" title="2.14.4.3. Referenznummer"><div class="titlepage"><div><div><h4 class="title"><a name="d0e3169"></a>2.14.4.3. Referenznummer</h4></div></div></div><p>Die Referenznummer wird in Kivitendo erzeugt und setzt sich
85
          Adressfelder, 2 Zeilen).</p></div><div class="sect3" title="2.14.4.3. Referenznummer"><div class="titlepage"><div><div><h4 class="title"><a name="d0e3182"></a>2.14.4.3. Referenznummer</h4></div></div></div><p>Die Referenznummer wird in Kivitendo erzeugt und setzt sich
86 86
          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
87 87
              aufgefüllt)</p></li><li class="listitem"><p>Rechnungsnummer (14-stellig, mit führenden Nullen
88 88
              aufgefüllt)</p></li><li class="listitem"><p>Prüfziffer (1-stellig, berechnet mittels modulo 10,
89 89
              rekursiv)</p></li></ul></div><p>Es sind lediglich Ziffern erlaubt. Allfällige Buchstaben und
90 90
          Sonderzeichen werden entfernt und fehlende Stellen werden mit
91
          führenden Nullen aufgefüllt.</p></div><div class="sect3" title="2.14.4.4. Vorlage"><div class="titlepage"><div><div><h4 class="title"><a name="d0e3189"></a>2.14.4.4. Vorlage</h4></div></div></div><p>Der Vorlagensatz "rev-odt" enthält die Vorlage
91
          führenden Nullen aufgefüllt.</p></div><div class="sect3" title="2.14.4.4. Vorlage"><div class="titlepage"><div><div><h4 class="title"><a name="d0e3202"></a>2.14.4.4. Vorlage</h4></div></div></div><p>Der Vorlagensatz "rev-odt" enthält die Vorlage
92 92
          <code class="literal">invoice_qr.odt</code>, welche für die Erstellung von
93 93
          QR-Rechnungen vorgesehen ist. Damit diese verwendet werden kann muss
94 94
          wie obenstehend beschrieben ein Drucker hinzugefügt werden, allerdings
......
103 103
          <span class="emphasis"><em>Bild-Kontextmenü → </em></span>
104 104
                  <span class="emphasis"><em>Einstellungen →
105 105
          Optionen → Name</em></span> einstellbar. Siehe dazu auch die
106
          Beispielvorlage.</p><div class="sect4" title="2.14.4.4.1. Zusätzliche Variablen für Vorlage"><div class="titlepage"><div><div><h5 class="title"><a name="d0e3219"></a>2.14.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
106
          Beispielvorlage.</p><div class="sect4" title="2.14.4.4.1. Zusätzliche Variablen für Vorlage"><div class="titlepage"><div><div><h5 class="title"><a name="d0e3232"></a>2.14.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
107 107
            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>),
108 108
            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
109 109
                  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/ch03s03.html
421 421
                     </span></dt><dd><p>Vorgangsbezeichnung</p></dd><dt><span class="term">
422 422
                        <code class="varname">transdate</code>
423 423
                     </span></dt><dd><p>Auftragsdatum wenn die Rechnung aus einem Auftrag
424
                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="d0e5766"></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
424
                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="d0e5779"></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
425 425
          werden: <a class="ulink" href="https://ctan.org/pkg/qrbill?lang=de" target="_top">https://ctan.org/pkg/qrbill?lang=de</a>
426 426
               </p><p>Für die Erstellung von QR-Rechnungen mit OpenDocument Vorlagen
427 427
          siehe: <a class="xref" href="ch02s14.html" title="2.14. OpenDocument-Vorlagen">Abschnitt&nbsp;2.14, „OpenDocument-Vorlagen“</a>
......
681 681
                        <code class="varname">invdate</code>
682 682
                     </span></dt><dd><p>Rechnungsdatum</p></dd><dt><span class="term">
683 683
                        <code class="varname">invnumber</code>
684
                     </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="d0e6728"></a>3.3.10.1. Einführung</h4></div></div></div><p>Die Variablen in anderen Vorlagen sind ähnlich wie in der
684
                     </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="d0e6741"></a>3.3.10.1. Einführung</h4></div></div></div><p>Die Variablen in anderen Vorlagen sind ähnlich wie in der
685 685
          Rechnung. Allerdings heißen die Variablen, die mit
686 686
          <code class="varname">inv</code> beginnen, jetzt anders. Bei den Angeboten
687 687
          fangen sie mit <code class="varname">quo</code> für "quotation" an:
doc/html/ch03s07.html
1 1
<html><head>
2 2
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
3
   <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.8.0: 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="d0e7410"></a>3.7.1. Übersicht</h3></div></div></div><p>Die Klassifizierung von Artikeln dient einer weiteren
3
   <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.8.0: 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="d0e7423"></a>3.7.1. Übersicht</h3></div></div></div><p>Die Klassifizierung von Artikeln dient einer weiteren
4 4
        Gliederung, um zum Beispiel den Einkauf vom Verkauf zu trennen,
5 5
        gekennzeichnet durch eine Beschreibung (z.B. "Einkauf") und ein Kürzel
6 6
        (z.B. "E"). Für jede Klassifizierung besteht eine Beschreibung und
7 7
        eine Abkürzung die normalerweise aus einem Zeichen besteht, kann aber
8 8
        auf mehrere Zeichen erweitert werden, falls zur Unterscheidung
9
        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="d0e7415"></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
9
        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="d0e7428"></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
10 10
            existierenden Artikel verwendet und ist gültig für Verkauf und
11 11
            Einkauf)</p></li></ul></div><p>Es können weitere Klassifizierungen angelegt werden. So kann es
12
        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="d0e7445"></a>3.7.3. Attribute</h3></div></div></div><p>Bisher haben die Klassifizierungen folgende Attribute, die auch
12
        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="d0e7458"></a>3.7.3. Attribute</h3></div></div></div><p>Bisher haben die Klassifizierungen folgende Attribute, die auch
13 13
        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
14 14
            werden</p></li><li class="listitem"><p>gültig für Einkauf - dieser Artikel kann im Einkauf genutzt
15 15
            werden</p></li><li class="listitem"><p>separat ausweisen - hierzu gibt es zur Dokumentengenerierung
......
19 19
        pro separat auszuweisenden Klassifizierungen die Variable<span class="bold"><strong>&lt; %separate_X_subtotal%&gt;</strong></span>, wobei X das
20 20
        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
21 21
        Verpackungsmaterial <span class="bold"><strong>
22
        &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="d0e7476"></a>3.7.4. Zwei-Zeichen Abkürzung</h3></div></div></div><p>Der Typ des Artikels und die Klassifizierung werden durch zwei
22
        &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="d0e7489"></a>3.7.4. Zwei-Zeichen Abkürzung</h3></div></div></div><p>Der Typ des Artikels und die Klassifizierung werden durch zwei
23 23
        Buchstaben dargestellt. Der erste Buchstabe ist eine Lokalisierung des
24 24
        Artikel-Typs ('P','A','S'), deutsch 'W', 'E', und 'D' für Ware
25 25
        Erzeugnis oder Dienstleistung und ggf. weiterer Typen.</p><p>Der zweite Buchstabe (und ggf. auch ein dritter, falls nötig)
doc/html/ch03s08.html
1 1
<html><head>
2 2
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
3
   <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.8.0: 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="d0e7488"></a>3.8.1. Übersicht</h3></div></div></div><p>Parallel zum alten WebDAV gibt es ein Datei-Management-System,
3
   <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.8.0: 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="d0e7501"></a>3.8.1. Übersicht</h3></div></div></div><p>Parallel zum alten WebDAV gibt es ein Datei-Management-System,
4 4
        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
5 5
            PDF-Dokumente,</p></li><li class="listitem"><p>zu bestimmten ERP-Daten gehörende Anhangdateien
6 6
            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
7
            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="d0e7515"></a>3.8.2. Struktur</h3></div></div></div><p>Über eine vom Speichermedium unabhängige Zwischenschicht werden
7
            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="d0e7528"></a>3.8.2. Struktur</h3></div></div></div><p>Über eine vom Speichermedium unabhängige Zwischenschicht werden
8 8
        die Dateien und ihre Versionen in der Datenbank verwaltet. Darunter
9 9
        können verschiedene Implementierungen (Backends) gleichzeitig
10 10
        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
......
23 23
        für "attachment" und "image" nur die Quelle "uploaded". Für "document"
24 24
        gibt es auf jeden Fall die Quelle "created". Die Quellen "scanner" und
25 25
        "email" müssen derzeit in der Datenbank konfiguriert werden (siehe
26
        <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="d0e7567"></a>3.8.3. Anwendung</h3></div></div></div><p>Die Daten werden bei den ERP-Objekten als extra Reiter
26
        <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="d0e7580"></a>3.8.3. Anwendung</h3></div></div></div><p>Die Daten werden bei den ERP-Objekten als extra Reiter
27 27
        dargestellt. Eine Verkaufsrechnung z.B. hat die Reiter "Dokumente" und
28 28
        "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
29 29
        Datei angezeigt. Wird eine Datei mit gleichem Namen hochgeladen, so
......
39 39
        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
40 40
        verschoben. Somit kann die Datei anschließend an ein anderes
41 41
        ERP-Objekt angehängt werden.</p><p>Derzeit sind "Titel" und "Beschreibung" noch nicht genutzt. Sie
42
        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="d0e7610"></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="d0e7616"></a>3.8.4.1.1. Reiter "Features"</h5></div></div></div><p>Unter dem Reiter <span class="bold"><strong>Features</strong></span>
42
        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="d0e7623"></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="d0e7629"></a>3.8.4.1.1. Reiter "Features"</h5></div></div></div><p>Unter dem Reiter <span class="bold"><strong>Features</strong></span>
43 43
            im Abschnitt Dateimanagement ist neben dem "alten" WebDAV das
44 44
            Dateimangement generell zu- und abschaltbar, sowie die Zuordnung
45 45
            der Dateitypen zu Backends. Die Löschbarkeit von Dateien, sowie
46 46
            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.
47 47
            Spezifische Backend-Konfigurierungen sind hier noch
48
            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="d0e7632"></a>3.8.4.1.2. Reiter "Allgemeine Dokumentenanhänge"</h5></div></div></div><p>Unter dem Reiter <span class="bold"><strong>Allgemeine
48
            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="d0e7645"></a>3.8.4.1.2. Reiter "Allgemeine Dokumentenanhänge"</h5></div></div></div><p>Unter dem Reiter <span class="bold"><strong>Allgemeine
49 49
            Dokumentenanhänge</strong></span> kann für alle ERP-Dokumente (
50 50
            Angebote, Aufträge, Lieferscheine, Rechnungen im Verkauf und
51 51
            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
1 1
<html><head>
2 2
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
3
   <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.8.0: 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="d0e7666"></a>3.9. Webshop-Api</h2></div></div></div><p>Das Shopmodul bietet die Möglichkeit Onlineshopartikel und
3
   <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.8.0: 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="d0e7679"></a>3.9. Webshop-Api</h2></div></div></div><p>Das Shopmodul bietet die Möglichkeit Onlineshopartikel und
4 4
      Onlineshopbestellungen zu verwalten und zu bearbeiten.</p><p>Es ist Multishopfähig, d.h. Artikel können mehreren oder
5 5
      unterschiedlichen Shops zugeordnet werden. Bestellungen können aus
6 6
      mehreren Shops geholt werden.</p><p>Zur Zeit bietet das Modul nur einen Connector zur REST-Api von
7 7
      Shopware. Weitere Connectoren können dazu programmiert und eingerichtet
8
      werden.</p><div class="sect2" title="3.9.1. Rechte für die Webshopapi"><div class="titlepage"><div><div><h3 class="title"><a name="d0e7675"></a>3.9.1. Rechte für die Webshopapi</h3></div></div></div><p>In der Administration können folgende Rechte vergeben
9
        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="d0e7690"></a>3.9.2. Konfiguration</h3></div></div></div><p>Unter System-&gt;Webshops können Shops angelegt und konfiguriert
10
        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="d0e7698"></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="d0e7701"></a>3.9.3.1. Shopvariablenreiter in Artikelstammdaten</h4></div></div></div><p>Mit dem Recht "Shopartikel anlegen und bearbeiten" und des
8
      werden.</p><div class="sect2" title="3.9.1. Rechte für die Webshopapi"><div class="titlepage"><div><div><h3 class="title"><a name="d0e7688"></a>3.9.1. Rechte für die Webshopapi</h3></div></div></div><p>In der Administration können folgende Rechte vergeben
9
        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="d0e7703"></a>3.9.2. Konfiguration</h3></div></div></div><p>Unter System-&gt;Webshops können Shops angelegt und konfiguriert
10
        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="d0e7711"></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="d0e7714"></a>3.9.3.1. Shopvariablenreiter in Artikelstammdaten</h4></div></div></div><p>Mit dem Recht "Shopartikel anlegen und bearbeiten" und des
11 11
          Markers <span class="bold"><strong>"Shopartikel" in den Basisdaten
12 12
          </strong></span>zeigt sich der Reiter "Shopvariablen" in den
13 13
          Artikelstammdaten. Hier können jetzt die Artikel mit
......
16 16
          Stelle können auch beliebig viele Bilder dem Shopartikel zugeordnet
17 17
          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
18 18
          ist es möglich einen Artikel auch mehreren Gruppen
19
          zuzuordenen</p></div><div class="sect3" title="3.9.3.2. Shopartikelliste"><div class="titlepage"><div><div><h4 class="title"><a name="d0e7714"></a>3.9.3.2. Shopartikelliste</h4></div></div></div><p>Unter dem Menu Webshop-&gt;Webshop Artikel hat man nochmal
19
          zuzuordenen</p></div><div class="sect3" title="3.9.3.2. Shopartikelliste"><div class="titlepage"><div><div><h4 class="title"><a name="d0e7727"></a>3.9.3.2. Shopartikelliste</h4></div></div></div><p>Unter dem Menu Webshop-&gt;Webshop Artikel hat man nochmal
20 20
          eine Gesamtübersicht. Von hier aus ist es möglich Artikel im Stapel
21 21
          unter verschiedenen Kriterien &lt;alles&gt;&lt;nur Preis&gt;&lt;nur
22 22
          Bestand&gt;&lt;Preis und Bestand&gt; an die jeweiligen Shops
23
          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="d0e7722"></a>3.9.4. Bestellimport</h3></div></div></div><p>Unter dem Menupunkt Webshop-&gt;Webshop Import öffnet sich die
23
          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="d0e7735"></a>3.9.4. Bestellimport</h3></div></div></div><p>Unter dem Menupunkt Webshop-&gt;Webshop Import öffnet sich die
24 24
        Bestellimportsliste. Hier ist sind Möglichkeiten gegeben Neue
25 25
        Bestellungen vom Shop abzuholen, geholte Bestellungen im Stapel oder
26 26
        einzeln als Auftrag zu transferieren. Die Liste kann nach
......
52 52
            auch der Grund für die Auftragssperre sein.</p></li><li class="listitem"><p>Die Buttons "Auftrag erstellen" und "Kunde mit
53 53
            Rechnungsadresse überschreiben" zeigen sich erst, wenn ein Kunde
54 54
            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
55
            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="d0e7775"></a>3.9.5. Mapping der Daten</h3></div></div></div><p>Das Mapping der kivitendo Daten mit den Shopdaten geschieht in
55
            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="d0e7788"></a>3.9.5. Mapping der Daten</h3></div></div></div><p>Das Mapping der kivitendo Daten mit den Shopdaten geschieht in
56 56
        der Datei SL/ShopConnector/&lt;SHOPCONNECTORNAME&gt;.pm
57 57
        z.B.:SL/ShopConnector/Shopware.pm</p><p>In dieser Datei gibt es einen Bereich wo die Bestellpostionen,
58 58
        die Bestellkopfdaten und die Artikeldaten gemapt werden. In dieser
doc/html/ch03s10.html
35 35
            </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
36 36
        kivitendo zwei Dinge:</p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p>Die Erstellung muss in der Mandantenkonfiguration
37 37
            aktiviert sein</p></li><li class="listitem"><p>Beim mindestens einem Bankkonto muss die Option
38
            „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="d0e7822"></a>3.10.3.1. Mandantenkonfiguration</h4></div></div></div><p>Die Einstellung für die Erstellung von ZUGFeRD Rechnungen
38
            „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="d0e7835"></a>3.10.3.1. Mandantenkonfiguration</h4></div></div></div><p>Die Einstellung für die Erstellung von ZUGFeRD Rechnungen
39 39
          erfolgt unter „System“ → „Mandatenkonfiguration“ → „Features“.
40 40
          Im Abschnitt „Einkauf und Verkauf“ finden Sie die Einstellung
41 41
          „Verkaufsrechnungen mit ZUGFeRD-Daten erzeugen“.
42 42
          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
43
          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="d0e7839"></a>3.10.3.2. Konfiguration der Bankkonten</h4></div></div></div><p>Unter „System → Bankkonten“ muss bei mindestens einem
43
          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="d0e7852"></a>3.10.3.2. Konfiguration der Bankkonten</h4></div></div></div><p>Unter „System → Bankkonten“ muss bei mindestens einem
44 44
          Bankkonto die Option „Nutzung mit ZUGFeRD“ auf „Ja“ gestellt
45 45
          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
46 46
        ZUGFeRD Format erstellt wurden, nach Kivitendo importieren.
doc/html/ch03s11.html
1 1
<html><head>
2 2
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
3
   <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.8.0: 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="d0e7865"></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="d0e7878"></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.
3
   <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.8.0: 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="d0e7878"></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="d0e7891"></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.
4 4
          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.
5
          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="d0e7896"></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>
5
          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="d0e7909"></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
3 3
   <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.8.0: 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
4 4
      einzeln oder mit dem Meldebestandsbericht gefüllt werden. Mit dem Filter „Lieferant“ im
5 5
      Warenkorb werden die Artikel einem Lieferanten zugeordnet und können dann bestellt, d.h. ein
6
      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="d0e7911"></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“
6
      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="d0e7924"></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“
7 7
        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
8 8
        Artikel schon im Einkaufswarenkorb liegt.</p><p>2) Bericht „Meldebestand“
9 9
      Ü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
10 10
        sofern markiert über die Aktion "Einkaufen" in den Einkaufswarenkorb gelegt werden. Hierzu muss
11
        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="d0e7930"></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
11
        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="d0e7943"></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
12 12
        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
13 13
        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 
14 14
        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/ch03s13.html
1
<html><head>
2
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
3
   <title>3.13. Zeiterfassung</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.8.0: Installation, Konfiguration, Entwicklung"><link rel="up" href="ch03.html" title="Kapitel 3. Features und Funktionen"><link rel="prev" href="ch03s12.html" title="3.12. Dispositionsmanager/Einkaufshelfer"><link rel="next" href="ch04.html" title="Kapitel 4. Entwicklerdokumentation"></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.13. Zeiterfassung</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch03s12.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="ch04.html">Weiter</a></td></tr></table><hr></div><div class="sect1" title="3.13. Zeiterfassung"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="features.timerecording"></a>3.13. Zeiterfassung</h2></div></div></div><p>
4
        Seit der Version 3.5.7 enthält kivitendo ein Modul zur Zeiterfassung.
5
        Damit ist es möglich, auftrags-, kunden- oder projektbezogen,
6
        Arbeitszeiten zu erfassen. Die erfassten Zeiten können über einen
7
        Hintergrund-Job in Lieferscheine umgewandelt werden.
8
      </p><div class="sect2" title="3.13.1. Konfiguration"><div class="titlepage"><div><div><h3 class="title"><a name="features.timerecording.config"></a>3.13.1. Konfiguration</h3></div></div></div><p>
9
          Die Zeiterfasssung funktioniert auch ohne Konfiguration, sofern der Benutzer
10
          die entsprechenden Rechte besitzt. Allerdings ist
11
          es möglich, Artikel für die Zeiterfassung zu konfigurieren, die im Bericht
12
          ausgewertet und bei der Umwandlung zum Lieferschein verwendet werden
13
          können.
14
          Zudem kann auf benutzerebene eingestellt werden, ob Zeiten mit Start- und
15
          End-Zeit oder mit Datum und Dauer erfasst werden sollen.
16
        </p><div class="sect3" title="3.13.1.1. Zugriffsrechte"><div class="titlepage"><div><div><h4 class="title"><a name="features.timerecording.config.rights"></a>3.13.1.1. Zugriffsrechte</h4></div></div></div><p>
17
            In der Rechteverwaltung im Admin-Bereich können im Zusammenhang mit
18
            der Zeiterfassung drei verschiedene Rechte vergeben werden:
19

  
20
            </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>
21
                           <span class="emphasis"><em>Zeiterfassungen erfassen, bearbeiten und ansehen</em></span>
22
                        </p><p>Diese Recht steuert, ob eine Gruppe den Menüpunkt zur
23
                Zeiterfassung überhaupt sehen und diese verwenden kann.</p></li><li class="listitem"><p>
24
                           <span class="emphasis"><em>Zeiterfassungseinträge aller Mitarbeiter anzeigen</em></span>
25
                        </p><p>Ohne dieses Recht darf ein Benutzer einer Benutzergruppe,
26
                die die Zeiterfassung verwenden darf, nur Zeiteinträge im Bericht
27
                sehen, bei denen dieser als Mitarbeiter eingetragen ist.</p></li><li class="listitem"><p>
28
                           <span class="emphasis"><em>Zeiterfassungseinträge aller Mitarbeiter bearbeiten</em></span>
29
                        </p><p>Ohne dieses Recht darf ein Benutzer einer Benutzergruppe,
30
                die die Zeiterfassung verwenden darf, nur Zeiteinträge anlegen
31
                und bearbeiten, bei denen dieser als Mitarbeiter eingetragen ist.</p></li></ul></div><p>
32

  
33
          
34
               </p></div><div class="sect3" title="3.13.1.2. Artikel für Zeiterfassung"><div class="titlepage"><div><div><h4 class="title"><a name="features.timerecording.config.part"></a>3.13.1.2. Artikel für Zeiterfassung</h4></div></div></div><p>
35
            Unter <span class="emphasis"><em>
36
                     <span class="guimenu">System</span>
37
            → <span class="guisubmenu">Artikel für Zeiterfassung</span>
38
                  </em></span>
39
            können Artikel zur Nutzung mit der Zeiterfassung erfasst werden. Diese Artikel
40
            müssen eine zeitbasierte Einheit haben.
41
          </p></div><div class="sect3" title="3.13.1.3. Benutzereinstellungen"><div class="titlepage"><div><div><h4 class="title"><a name="features.timerecording.config.time_or_duration"></a>3.13.1.3. Benutzereinstellungen</h4></div></div></div><p>
42
            Unter <span class="emphasis"><em>
43
                     <span class="guimenu">Programm</span>
44
            → <span class="guisubmenu">Benutzereinstellungen</span>
45
                  </em></span>
46
            im Reiter <span class="emphasis"><em>Persönliche Einstellungen</em></span> bei
47
            <span class="emphasis"><em>Datum und Dauer für Zeiterfassung verwenden</em></span>
48
            kann der Benutzer angeben, ob Zeiten mit Start- und End-Zeit oder mit
49
            Datum und Dauer erfasst werden sollen.
50
          </p></div></div><div class="sect2" title="3.13.2. Erfassen"><div class="titlepage"><div><div><h3 class="title"><a name="features.timerecording.add"></a>3.13.2. Erfassen</h3></div></div></div><p>
51
          Über den Menüpunkt <span class="emphasis"><em>
52
                  <span class="guimenu">Produktivität</span>
53
          → <span class="guisubmenu">Zeiterfassung</span>
54
               </em></span>
55
          gelangt man zur Erfassungsmaske der Zeiterfassung. Je nach Einstellung
56
          muss ein Datum oder Datum und Start-Zeit angegeben werden. Ebenso sind
57
          die Felder <span class="emphasis"><em>Kunde</em></span> und
58
          <span class="emphasis"><em>Beschreibung</em></span>
59
          Pflichtfelder.
60
        </p><p>
61
          Wird ein Auftrag oder ein Projekt, dem ein Kunde zugeordnet ist,
62
          ausgewählt, so wird das Feld <span class="emphasis"><em>Kunde</em></span>
63
          automatisch mit dem zugehörigen Kunden gefüllt und für die
64
          manuelle Bearbeitung gesperrt.
65
        </p><p>
66
          Die End-Zeit bzw. die Dauer ist kein Pflichtfeld, damit
67
          man einen Eintrag z.B. beim Start der Arbeit anlegen und
68
          später am Ende dann die End-Zeit bzw. Dauer erfassen kann.
69
          Bei Eingabe über Start- und End-Zeit dürfen sich die Zeiten für
70
          ein und denselben Mitarbeiter nicht überlappen.
71
        </p><p>
72
          Falls der Bearbeiter das Recht
73
          <span class="emphasis"><em>Zeiterfassungseinträge aller Mitarbeiter
74
          bearbeiten</em></span> besitzt, kann auch der Mitarbeiter für
75
          diesen Zeiteintrag ausgewählt werden.
76
        </p></div><div class="sect2" title="3.13.3. Bericht"><div class="titlepage"><div><div><h3 class="title"><a name="features.timerecording.report"></a>3.13.3. Bericht</h3></div></div></div><p>
77
          Ein Bericht über die erfassten Zeiten lässt sich über
78
          <span class="emphasis"><em>
79
                  <span class="guimenu">Produktivität</span> → <span class="guisubmenu">Berichte</span>
80
          → <span class="guisubmenu">Zeiterfassung</span>
81
               </em></span> ausgeben.
82
          Hier lassen sich die Zeiten auch filtern, sortieren und exportieren.
83
        </p><p>
84
          Ausgewählte Zeiteinträge können über <span class="emphasis"><em>
85
                  <span class="guimenu">Aktionen</span>
86
          → <span class="guisubmenu">Als gebucht markieren</span>
87
               </em></span> als schon gebucht
88
          markiert werden. Dies geschieht normalerweise bei der Konvertierung
89
          zum Lieferschein und kann hier händisch durchgeführt werden, wenn diese
90
          Zeitbuchungen bei der Konvertierung nicht mehr berücksichtigt werden sollen.
91
        </p></div><div class="sect2" title="3.13.4. Konvertierung zu Lieferscheinen"><div class="titlepage"><div><div><h3 class="title"><a name="features.timerecording.conversion"></a>3.13.4. Konvertierung zu Lieferscheinen</h3></div></div></div><p>
92
          Über den Hintergrund-Job
93
          <span class="emphasis"><em>ConvertTimeRecordings</em></span> können
94
          Zeiteinträge in Lieferscheine umgewandelt werden. Hierbei
95
          werden alle noch nicht gebuchten Zeiteinträge eines
96
          bestimmten Zeitraums für bestimmte Kunden gesammelt und
97
          in Lieferscheine umgewandelt.
98
          Pro Kunde wird ein Lieferschein generiert und
99
          pro Artikel wird eine Positionszeile erzeugt. Dabei werden
100
          Einträge mit gleichen Beschreibungen zusammengefasst. Die
101
          Details landen im Langtext der Position.
102
        </p><p>
103
          Ohne übergebene Parameter im Feld <span class="emphasis"><em>Daten</em></span> werden alle
104
          Zeiteinträge des letzten Monats für alle Kunden umgewandelt. Dabei
105
          werden die Zeiten auf volle Viertelstunden aufgerundet (siehe auch
106
          <a class="xref" href="ch03s13.html#features.timerecording.configuration" title="3.13.4.1. Konfigurations-Optionen">Konfigurations-Optionen der Zeiterfassung</a>).
107
        </p><div class="sect3" title="3.13.4.1. Konfigurations-Optionen"><div class="titlepage"><div><div><h4 class="title"><a name="features.timerecording.configuration"></a>3.13.4.1. Konfigurations-Optionen</h4></div></div></div><p>
108
            Zur generellen Konfiguration von Hintergrund-Jobs und zur Übergabe
109
            von Parametern als Daten an diese, siehe <a class="xref" href="ch02s08.html" title="2.8. Der Task-Server">Abschnitt&nbsp;2.8, „Der Task-Server“</a>
110
            bzw. <a class="xref" href="ch02s08.html#Tasks-konfigurieren" title="2.8.5. Exemplarische Konfiguration eines Hintergrund-Jobs, der die Jahreszahl in allen Nummernkreisen zum Jahreswechsel erhöht">Tasks-konfigurieren</a>).
111
          </p><p>
112
            Folgende Parameter können als <span class="emphasis"><em>Daten</em></span> an den
113
            Hintergrund-Job zur Konvertierung übergeben werden:
114
            </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>
115
                  
116
                           <span class="emphasis"><em>from_date</em></span>
117
                
118
                        </p><p>
119
                  Das Startdatum, von welchen an die Zeiteinträge berücksicht werden.
120
                  Voreinstellung ist der erste Tag des vorherigen Montats.
121
                </p><p>
122
                  Beispiel (das Zeitformat hängt von der persönlichen Einstellungen ab):
123
                  </p><pre class="programlisting">from_date: 01.12.2020</pre><p>
124
                
125
                        </p></li><li class="listitem"><p>
126
                  
127
                           <span class="emphasis"><em>to_date</em></span>
128
                
129
                        </p><p>
130
                  Das Datum, bis zu welchem die Zeiteinträge zur Konvertierung gesammelt
131
                  werden. Voreinstellung ist der letzte Tag des vorherigen Montas.
132
                </p><p>
133
                  Beispiel (das Zeitformat hängt von der persönlichen Einstellungen ab):
134
                  </p><pre class="programlisting">to_date: 15.12.2020</pre><p>
135
                
136
                        </p></li><li class="listitem"><p>
137
                  
138
                           <span class="emphasis"><em>customernumbers</em></span>
139
                
140
                        </p><p>
141
                  Eine Liste mit Kundennummern, für die Zeiteinträge gesammelt werden
142
                  sollen. Wird diese Liste nicht angegeben, werden Einträge für
143
                  alle Kunden berücksichtig.
144
                </p><p>
145
                  
146
                           </p><pre class="programlisting">customernumbers: [c1,22332,334343]</pre><p>
147
                
148
                        </p></li><li class="listitem"><p>
149
                  
150
                           <span class="emphasis"><em>override_part_id</em></span>
151
                
152
                        </p><p>
153
                  Die Datenbank-Id einer zeitbasierten Dienstleistung, die verwendet
154
                  werden soll, um die Zeiteinträge zu buchen. Dieser Wert überschreibt
155
                  den Eintrag des Artikels des Zeiteintrags.
156
                </p></li><li class="listitem"><p>
157
                  
158
                           <span class="emphasis"><em>default_part_id</em></span>
159
                
160
                        </p><p>
161
                  Die Datenbank-Id einer zeitbasierten Dienstleistung, die verwendet
162
                  werden soll, um die Zeiteinträge zu buchen, falls im Zeiteintrag
163
                  kein Artikel gespeichert ist.
164
                </p></li><li class="listitem"><p>
165
                  
166
                           <span class="emphasis"><em>rounding</em></span>
167
                
168
                        </p><p>
169
                  Ist dieser Wert <code class="literal">0</code>, so werden die Zeiten nicht gerundet.
170
                  Ist der Wert <code class="literal">1</code> (oder "wahr" in Perl"), so werden die Zeiten auf volle Viertelstunden aufgerundet, also z.B. 0.25h, 0.5h, 0.75h,
171
                  1.25h ...
172
                </p><p>
173
                  Voreinstellung ist <code class="literal">1</code> ("wahr").
174
                </p></li><li class="listitem"><p>
175
                  
176
                           <span class="emphasis"><em>link_order</em></span>
177
                
178
                        </p><p>
179
                  Ist der Wert <code class="literal">1</code> (oder "wahr" in Perl"), so verknüpft
180
                  der Hintergrund-Job den erzeugten Lieferschein mit dem im Zeiteintrag
181
                  angegebenen Auftrag.
182
                  Ist kein Auftrag angegeben, wird versucht, einen Auftrag für den
183
                  angegebenen Kunden und die angegebene Projektnummer zu finden.
184
                </p><p>
185
                  Folgende Kriterien werden zum Finden eines Vorgängerauftrags angwendet:
186
                  </p><div class="itemizedlist"><ul class="itemizedlist" type="circle"><li class="listitem"><p>
187
                      Auftrag ist im Zeiteintrag angegeben <span class="emphasis"><em>oder</em></span>
188
                    
189
                                 </p></li><li class="listitem"><p>
190
                      Datenbank-Id des Projekts des Auftrags ist gleich
191
                      der Datenbank-Id des Zeiteintrags <span class="emphasis"><em>oder</em></span> der in den Daten
192
                      übergebenen Projekt-Id
193
                    </p></li><li class="listitem"><p>
194
                      Kunde des Auftrags ist gleich Kunde des Zeiteintrags
195
                    </p></li><li class="listitem"><p>
196
                      der Auftrag muss mindestens eine zugehörige zeitbasierte Position haben
197
                    </p></li><li class="listitem"><p>
198
                      das Projekt muss gültig und aktiv sein
199
                    </p></li></ul></div><p>
200
                
201
                        </p><p>
202
                  Voreinstellung ist aus. Wenn dieser Parameter gesetzt ist, läuft der
203
                  Hintergrund-Job auf einen Fehler, falls kein geeigneter Vorgängerauftrag
204
                  gefunden werden kann.
205
                </p><p>
206
                  Der Job beachtet nicht, ob der Auftrag schon geliefert oder geschlossen
207
                  ist.
208
                  Wenn der Kundenauftrag überliefert wird, muss dies organisatorisch
209
                  geklärt werden. Der Kundenauftrag kann auch bereits geschlossen sein,
210
                  d.h. der Betrag ist vollständig fakturiert, aber die Leistungen sind
211
                  noch nicht vollständig geliefert (einfacher Fall: "Vorauskasse").
212
                </p><p>
213
                  siehe auch den Hintergrund-Job
214
                  <code class="literal">CloseProjectsBelongingToClosedSalesOrder</code>
215
                  für eine weitergehende Automatisierung der Abläufe.
216
                </p></li><li class="listitem"><p>
217
                    
218
                           <span class="emphasis"><em>override_project_id</em></span>
219
                  
220
                        </p><p>
221
                    Verwende diese Datenbank-Id für das Projekt an Stelle des
222
                    im Zeiteintrag angegebenen Projekts, um den zugehörigen Auftrag
223
                    zu finden. Dieser Parameter wird nur berücksichtig, wenn
224
                    <span class="emphasis"><em>link_order</em></span> wahr ist.
225
                  </p></li><li class="listitem"><p>
226
                    
227
                           <span class="emphasis"><em>default_project_id</em></span>
228
                  
229
                        </p><p>
230
                    Verwende diese Datenbank-Id für das Projekt, falls
231
                    im Zeiteintrag kein Projekt angegeben ist, um den
232
                    zugehörigen Auftrag zu finden.
233
                    Dieser Parameter wird nur berücksichtig, wenn
234
                  </p></li></ul></div><p>
235
          
236
               </p></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch03s12.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="ch04.html">Weiter</a></td></tr><tr><td width="40%" align="left" valign="top">3.12. Dispositionsmanager/Einkaufshelfer&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;Kapitel 4. Entwicklerdokumentation</td></tr></table></div></body></html>
doc/html/ch04.html
1 1
<html><head>
2 2
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
3
   <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.8.0: Installation, Konfiguration, Entwicklung"><link rel="up" href="index.html" title="kivitendo 3.8.0: 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="d0e8249"></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="d0e8255"></a>4.1.1. Wie sehen globale Variablen in Perl aus?</h3></div></div></div><p>Globale Variablen liegen in einem speziellen namespace namens
3
   <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.8.0: Installation, Konfiguration, Entwicklung"><link rel="up" href="index.html" title="kivitendo 3.8.0: 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="d0e8262"></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="d0e8268"></a>4.1.1. Wie sehen globale Variablen in Perl aus?</h3></div></div></div><p>Globale Variablen liegen in einem speziellen namespace namens
4 4
        "main", der von überall erreichbar ist. Darüber hinaus sind bareword
5 5
        globs global und die meisten speziellen Variablen sind...
6 6
        speziell.</p><p>Daraus ergeben sich folgende Formen:</p><div class="variablelist"><dl><dt><span class="term">
......
25 25
              <code class="varname">$PACKAGE::form</code>.</p></dd><dt><span class="term">
26 26
                     <code class="literal">local $form</code>
27 27
                  </span></dt><dd><p>Alle Änderungen an <code class="varname">$form</code> werden am Ende
28
              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="d0e8356"></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>
28
              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="d0e8369"></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>
29 29
               <span class="productname">SQL-Ledger</span>™ hat fast alles im globalen
30 30
        namespace abgelegt, und erwartet, dass es da auch wiederzufinden ist.
31 31
        Unter <span class="productname">FCGI</span>™ müssen diese Sachen aber wieder
......
39 39
        dies hat, seit der Einführung, u.a. schon so manche langwierige
40 40
        Bug-Suche verkürzt. Da globale Variablen aber implizit mit Package
41 41
        angegeben werden, werden die nicht geprüft, und somit kann sich
42
        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="d0e8389"></a>4.1.3. Kanonische globale Variablen</h3></div></div></div><p>Um dieses Problem im Griff zu halten gibt es einige wenige
42
        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="d0e8402"></a>4.1.3. Kanonische globale Variablen</h3></div></div></div><p>Um dieses Problem im Griff zu halten gibt es einige wenige
43 43
        globale Variablen, die kanonisch sind, d.h. sie haben bestimmte
44 44
        vorgegebenen Eigenschaften, und alles andere sollte anderweitig
45 45
        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>
......
62 62
                     <code class="varname">$::request</code>
63 63
                  </p></li></ul></div><p>Damit diese nicht erneut als Müllhalde missbraucht werden, im
64 64
        Folgenden eine kurze Erläuterung der bestimmten vorgegebenen
65
        Eigenschaften (Konventionen):</p><div class="sect3" title="4.1.3.1. $::form"><div class="titlepage"><div><div><h4 class="title"><a name="d0e8453"></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
65
        Eigenschaften (Konventionen):</p><div class="sect3" title="4.1.3.1. $::form"><div class="titlepage"><div><div><h4 class="title"><a name="d0e8466"></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
66 66
              "<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
67 67
              sein.</p></li><li class="listitem"><p>Enthält am Anfang eines Requests die Requestparameter vom
68 68
              User</p></li><li class="listitem"><p>Kann zwar intern über Requestgrenzen ein Datenbankhandle
......
110 110
  push @{ $form-&gt;{TEMPLATE_ARRAYS}{number} },          $form-&gt;{"partnumber_$i"};
111 111
  push @{ $form-&gt;{TEMPLATE_ARRAYS}{description} },     $form-&gt;{"description_$i"};
112 112
  # ...
113
}</pre></div><div class="sect3" title="4.1.3.2. %::myconfig"><div class="titlepage"><div><div><h4 class="title"><a name="d0e8537"></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
113
}</pre></div><div class="sect3" title="4.1.3.2. %::myconfig"><div class="titlepage"><div><div><h4 class="title"><a name="d0e8550"></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
114 114
              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
115 115
              extern serialisiert werden, weil da auch der Datenbankzugriff
116 116
              für diesen user drinsteht.</p></li><li class="listitem"><p>Enthält unter anderem Datumsformat dateformat und
......
122 122
          überwiegend die Daten, die sich unter <span class="guimenu">Programm</span>
123 123
          -&gt; <span class="guimenuitem">Einstellungen</span> befinden, bzw. die
124 124
          Informationen über den Benutzer die über die
125
          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="d0e8576"></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
125
          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="d0e8589"></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
126 126
              sein.</p></li><li class="listitem"><p>Cached intern über Requestgrenzen hinweg benutzte
127 127
              Locales</p></li></ul></div><p>Lokalisierung für den aktuellen User. Alle Übersetzungen,
128
          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="d0e8594"></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
128
          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="d0e8607"></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
129 129
              Funktionen</p></li></ul></div><p>
130 130
                  <code class="varname">$::lxdebug</code> stellt Debuggingfunktionen
131 131
          bereit, wie "<code class="function">enter_sub</code>" und
......
135 135
          "<code class="function">message</code>" und "<code class="function">dump</code>" mit
136 136
          denen man flott Informationen ins Log (tmp/kivitendo-debug.log)
137 137
          packen kann.</p><p>Beispielsweise so:</p><pre class="programlisting">$main::lxdebug-&gt;message(0, 'Meine Konfig:' . Dumper (%::myconfig));
138
$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="d0e8631"></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>
138
$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="d0e8644"></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>
139 139
                  <code class="varname">$::auth</code> stellt Funktionen bereit um die
140 140
          Rechte des aktuellen Users abzufragen. Obwohl diese Informationen
141 141
          vom aktuellen User abhängen wird das Objekt aus
......
144 144
          Dessen Einstellungen können über
145 145
          <code class="literal">$::auth-&gt;client</code> abgefragt werden; Rückgabewert
146 146
          ist ein Hash mit den Werten aus der Tabelle
147
          <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="d0e8660"></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
147
          <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="d0e8673"></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
148 148
              "<code class="classname">SL::LxOfficeConf</code>"</p></li><li class="listitem"><p>Global gecached</p></li><li class="listitem"><p>Repräsentation der
149 149
              <code class="filename">config/kivitendo.conf[.default]</code>-Dateien</p></li></ul></div><p>Globale Konfiguration. Configdateien werden zum Start gelesen
150 150
          und danach nicht mehr angefasst. Es ist derzeit nicht geplant, dass
......
154 154
file_name = /tmp/kivitendo-debug.log</pre><p>ist der Key <code class="varname">file</code> im Programm als
155 155
          <code class="varname">$::lx_office_conf-&gt;{debug}{file}</code>
156 156
          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
157
            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="d0e8696"></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
157
            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="d0e8709"></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
158 158
              "<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>,
159 159
          speichert aber Daten die von der Instanz abhängig sind. Eine Instanz
160 160
          ist hier eine Mandantendatenbank. Beispielsweise überprüft
161 161
          </p><pre class="programlisting">$::instance_conf-&gt;get_inventory_system eq 'perpetual'</pre><p>
162
          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="d0e8717"></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
162
          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="d0e8730"></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
163 163
              "<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
164 164
              Server</p></li></ul></div><p>Der dritte Punkt ist auch der einzige Grund warum das Objekt
165 165
          global gespeichert wird. Wird vermutlich irgendwann in einem anderen
166
          Objekt untergebracht.</p></div><div class="sect3" title="4.1.3.9. $::request"><div class="titlepage"><div><div><h4 class="title"><a name="d0e8735"></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>
166
          Objekt untergebracht.</p></div><div class="sect3" title="4.1.3.9. $::request"><div class="titlepage"><div><div><h4 class="title"><a name="d0e8748"></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>
167 167
                  <code class="varname">$::request</code> ist ein generischer Platz um
168 168
          Daten "für den aktuellen Request" abzulegen. Sollte nicht für action
169 169
          at a distance benutzt werden, sondern um lokales memoizing zu
......
176 176
              <code class="varname">$::request</code>
177 177
                     </p></li><li class="listitem"><p>Muss ich von anderen Teilen des Programms lesend drauf
178 178
              zugreifen? Dann <code class="varname">$::request</code>, aber Zugriff über
179
              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="d0e8777"></a>4.1.4. Ehemalige globale Variablen</h3></div></div></div><p>Die folgenden Variablen waren einmal im Programm, und wurden
180
        entfernt.</p><div class="sect3" title="4.1.4.1. $::cgi"><div class="titlepage"><div><div><h4 class="title"><a name="d0e8782"></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
179
              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="d0e8790"></a>4.1.4. Ehemalige globale Variablen</h3></div></div></div><p>Die folgenden Variablen waren einmal im Programm, und wurden
180
        entfernt.</p><div class="sect3" title="4.1.4.1. $::cgi"><div class="titlepage"><div><div><h4 class="title"><a name="d0e8795"></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
181 181
              Klassenfunktionen funktionieren</p></li><li class="listitem"><p>Aufruf als Klasse erzeugt Dummyobjekt was im
182 182
              Klassennamespace gehalten wird und über Requestgrenzen
183 183
              leaked</p></li><li class="listitem"><p>liegt jetzt unter
184 184
              <code class="varname">$::request-&gt;{cgi}</code>
185
                     </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="d0e8798"></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
185
                     </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="d0e8811"></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
186 186
              ein paar hundert mal pro Request eine Liste der Einheiten
187 187
              brauchen, und de als Parameter durch einen Riesenstack von
188 188
              Funktionen geschleift werden müssten.</p></li><li class="listitem"><p>Liegt jetzt unter
189 189
              <code class="varname">$::request-&gt;{cache}{all_units}</code>
190 190
                     </p></li><li class="listitem"><p>Wird nur in
191 191
              <code class="function">AM-&gt;retrieve_all_units()</code> gesetzt oder
192
              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="d0e8817"></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
192
              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="d0e8830"></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
193 193
              abzufangen.</p></li><li class="listitem"><p>Wurde entfernt, weil callsub nur einen Bruchteil der
194 194
              möglichen Rekursioenen darstellt, und da nie welche
195 195
              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
2 2
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
3 3
   <title>kivitendo 3.8.0: 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.8.0: 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.8.0: Installation, Konfiguration,
4 4
  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.8.0: Installation, Konfiguration, Entwicklung"><div class="titlepage"><div><div><h1 class="title"><a name="kivitendo-documentation"></a>kivitendo 3.8.0: Installation, Konfiguration,
5
  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#d0e727">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><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#d0e1261">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#d0e1415">2.7.3. Authentifizierung mittels HTTP Basic Authentication</a></span></dt><dt><span class="sect2"><a href="ch02s07.html#d0e1431">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#d0e1445">2.7.5. Weitergehende Konfiguration</a></span></dt><dt><span class="sect2"><a href="ch02s07.html#d0e1456">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><dt><span class="sect2"><a href="ch02s08.html#Tasks-konfigurieren">2.8.5. Exemplarische Konfiguration eines Hintergrund-Jobs, der die Jahreszahl in allen Nummernkreisen zum Jahreswechsel erhöht</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch02s09.html">2.9. Benutzerauthentifizierung und Administratorpasswort</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch02s09.html#Grundlagen-zur-Benutzerauthentifizierung">2.9.1. Grundlagen zur Benutzerauthentifizierung</a></span></dt><dt><span class="sect2"><a href="ch02s09.html#Administratorpasswort">2.9.2. Administratorpasswort</a></span></dt><dt><span class="sect2"><a href="ch02s09.html#Authentifizierungsdatenbank">2.9.3. Authentifizierungsdatenbank</a></span></dt><dt><span class="sect2"><a href="ch02s09.html#Passwort%C3%BCberpr%C3%BCfung">2.9.4. Passwortüberprüfung</a></span></dt><dt><span class="sect2"><a href="ch02s09.html#Name-des-Session-Cookies">2.9.5. Name des Session-Cookies</a></span></dt><dt><span class="sect2"><a href="ch02s09.html#Anlegen-der-Authentifizierungsdatenbank">2.9.6. Anlegen der Authentifizierungsdatenbank</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch02s10.html">2.10. Mandanten-, Benutzer- und Gruppenverwaltung</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch02s10.html#Zusammenh%C3%A4nge">2.10.1. Zusammenhänge</a></span></dt><dt><span class="sect2"><a href="ch02s10.html#Mandanten-Benutzer-Gruppen">2.10.2. Mandanten, Benutzer und Gruppen</a></span></dt><dt><span class="sect2"><a href="ch02s10.html#Datenbanken-anlegen">2.10.3. Datenbanken anlegen</a></span></dt><dt><span class="sect2"><a href="ch02s10.html#Gruppen-anlegen">2.10.4. Gruppen anlegen</a></span></dt><dt><span class="sect2"><a href="ch02s10.html#Benutzer-anlegen">2.10.5. Benutzer anlegen</a></span></dt><dt><span class="sect2"><a href="ch02s10.html#Mandanten-anlegen">2.10.6. Mandanten anlegen</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch02s11.html">2.11. Drucker- und Systemverwaltung</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch02s11.html#Druckeradministration">2.11.1. Druckeradministration</a></span></dt><dt><span class="sect2"><a href="ch02s11.html#System">2.11.2. System sperren / entsperren</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch02s12.html">2.12. E-Mail</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch02s12.html#config.sending-email">2.12.1. E-Mail-Versand aus kivitendo heraus</a></span></dt><dt><span class="sect2"><a href="ch02s12.html#config.sent_emails_in_imap">2.12.2. Versendete E-Mails über IMAP exportieren</a></span></dt><dt><span class="sect2"><a href="ch02s12.html#config.imap_client">2.12.3. E-Mails in kivitendo importieren</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch02s13.html">2.13. Drucken mit kivitendo</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch02s13.html#Vorlagenverzeichnis-anlegen">2.13.1. Vorlagenverzeichnis anlegen</a></span></dt><dt><span class="sect2"><a href="ch02s13.html#Aufbau des marei Vorlagensatzes">2.13.2. Der Druckvorlagensatz marei</a></span></dt><dt><span class="sect2"><a href="ch02s13.html#Vorlagen-RB">2.13.3. Der Druckvorlagensatz RB</a></span></dt><dt><span class="sect2"><a href="ch02s13.html#Vorlagen-rev-odt">2.13.4. Der Druckvorlagensatz rev-odt</a></span></dt><dt><span class="sect2"><a href="ch02s13.html#allgemeine-hinweise-zu-latex">2.13.5. Allgemeine Hinweise zu LaTeX Vorlagen</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch02s14.html">2.14. OpenDocument-Vorlagen</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch02s14.html#d0e2942">2.14.1. Grundeinstellung</a></span></dt><dt><span class="sect2"><a href="ch02s14.html#d0e2959">2.14.2. Direkte Erzeugung von PDF-Dateien</a></span></dt><dt><span class="sect2"><a href="ch02s14.html#d0e3010">2.14.3. Vorbereitungen</a></span></dt><dt><span class="sect2"><a href="ch02s14.html#d0e3066">2.14.4. Schweizer QR-Rechnung mit OpenDocument Vorlagen</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch02s15.html">2.15. Nomenklatur</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch02s15.html#booking.dates">2.15.1. Datum bei Buchungen</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch02s16.html">2.16. Konfiguration zur Einnahmenüberschussrechnung/Bilanzierung:
5
  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#d0e740">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><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#d0e1274">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#d0e1428">2.7.3. Authentifizierung mittels HTTP Basic Authentication</a></span></dt><dt><span class="sect2"><a href="ch02s07.html#d0e1444">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#d0e1458">2.7.5. Weitergehende Konfiguration</a></span></dt><dt><span class="sect2"><a href="ch02s07.html#d0e1469">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><dt><span class="sect2"><a href="ch02s08.html#Tasks-konfigurieren">2.8.5. Exemplarische Konfiguration eines Hintergrund-Jobs, der die Jahreszahl in allen Nummernkreisen zum Jahreswechsel erhöht</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch02s09.html">2.9. Benutzerauthentifizierung und Administratorpasswort</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch02s09.html#Grundlagen-zur-Benutzerauthentifizierung">2.9.1. Grundlagen zur Benutzerauthentifizierung</a></span></dt><dt><span class="sect2"><a href="ch02s09.html#Administratorpasswort">2.9.2. Administratorpasswort</a></span></dt><dt><span class="sect2"><a href="ch02s09.html#Authentifizierungsdatenbank">2.9.3. Authentifizierungsdatenbank</a></span></dt><dt><span class="sect2"><a href="ch02s09.html#Passwort%C3%BCberpr%C3%BCfung">2.9.4. Passwortüberprüfung</a></span></dt><dt><span class="sect2"><a href="ch02s09.html#Name-des-Session-Cookies">2.9.5. Name des Session-Cookies</a></span></dt><dt><span class="sect2"><a href="ch02s09.html#Anlegen-der-Authentifizierungsdatenbank">2.9.6. Anlegen der Authentifizierungsdatenbank</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch02s10.html">2.10. Mandanten-, Benutzer- und Gruppenverwaltung</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch02s10.html#Zusammenh%C3%A4nge">2.10.1. Zusammenhänge</a></span></dt><dt><span class="sect2"><a href="ch02s10.html#Mandanten-Benutzer-Gruppen">2.10.2. Mandanten, Benutzer und Gruppen</a></span></dt><dt><span class="sect2"><a href="ch02s10.html#Datenbanken-anlegen">2.10.3. Datenbanken anlegen</a></span></dt><dt><span class="sect2"><a href="ch02s10.html#Gruppen-anlegen">2.10.4. Gruppen anlegen</a></span></dt><dt><span class="sect2"><a href="ch02s10.html#Benutzer-anlegen">2.10.5. Benutzer anlegen</a></span></dt><dt><span class="sect2"><a href="ch02s10.html#Mandanten-anlegen">2.10.6. Mandanten anlegen</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch02s11.html">2.11. Drucker- und Systemverwaltung</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch02s11.html#Druckeradministration">2.11.1. Druckeradministration</a></span></dt><dt><span class="sect2"><a href="ch02s11.html#System">2.11.2. System sperren / entsperren</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch02s12.html">2.12. E-Mail</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch02s12.html#config.sending-email">2.12.1. E-Mail-Versand aus kivitendo heraus</a></span></dt><dt><span class="sect2"><a href="ch02s12.html#config.sent_emails_in_imap">2.12.2. Versendete E-Mails über IMAP exportieren</a></span></dt><dt><span class="sect2"><a href="ch02s12.html#config.imap_client">2.12.3. E-Mails in kivitendo importieren</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch02s13.html">2.13. Drucken mit kivitendo</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch02s13.html#Vorlagenverzeichnis-anlegen">2.13.1. Vorlagenverzeichnis anlegen</a></span></dt><dt><span class="sect2"><a href="ch02s13.html#Aufbau des marei Vorlagensatzes">2.13.2. Der Druckvorlagensatz marei</a></span></dt><dt><span class="sect2"><a href="ch02s13.html#Vorlagen-RB">2.13.3. Der Druckvorlagensatz RB</a></span></dt><dt><span class="sect2"><a href="ch02s13.html#Vorlagen-rev-odt">2.13.4. Der Druckvorlagensatz rev-odt</a></span></dt><dt><span class="sect2"><a href="ch02s13.html#allgemeine-hinweise-zu-latex">2.13.5. Allgemeine Hinweise zu LaTeX Vorlagen</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch02s14.html">2.14. OpenDocument-Vorlagen</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch02s14.html#d0e2955">2.14.1. Grundeinstellung</a></span></dt><dt><span class="sect2"><a href="ch02s14.html#d0e2972">2.14.2. Direkte Erzeugung von PDF-Dateien</a></span></dt><dt><span class="sect2"><a href="ch02s14.html#d0e3023">2.14.3. Vorbereitungen</a></span></dt><dt><span class="sect2"><a href="ch02s14.html#d0e3079">2.14.4. Schweizer QR-Rechnung mit OpenDocument Vorlagen</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch02s15.html">2.15. Nomenklatur</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch02s15.html#booking.dates">2.15.1. Datum bei Buchungen</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch02s16.html">2.16. Konfiguration zur Einnahmenüberschussrechnung/Bilanzierung:
6 6
      EUR</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch02s16.html#config.eur.introduction">2.16.1. Einführung</a></span></dt><dt><span class="sect2"><a href="ch02s16.html#config.eur.parameters">2.16.2. Konfigurationsparameter</a></span></dt><dt><span class="sect2"><a href="ch02s16.html#config.eur.setting-parameters">2.16.3. Festlegen der Parameter</a></span></dt><dt><span class="sect2"><a href="ch02s16.html#config.eur.inventory-system-perpetual">2.16.4. Bemerkungen zur Bestandsmethode</a></span></dt><dt><span class="sect2"><a href="ch02s16.html#config.eur.knonw-issues">2.16.5. Bekannte Probleme</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch02s17.html">2.17. SKR04 19% Umstellung für innergemeinschaftlichen Erwerb</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch02s17.html#config.skr04-update-3804.introduction">2.17.1. Einführung</a></span></dt><dt><span class="sect2"><a href="ch02s17.html#config.skr04-update-3804.create-chart">2.17.2. Konto 3804 manuell anlegen</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch02s18.html">2.18. Verhalten des Bilanzberichts</a></span></dt><dt><span class="sect1"><a href="ch02s19.html">2.19. Erfolgsrechnung</a></span></dt><dt><span class="sect1"><a href="ch02s20.html">2.20. Rundung in Verkaufsbelegen</a></span></dt><dt><span class="sect1"><a href="ch02s21.html">2.21. Einstellungen pro Mandant</a></span></dt><dt><span class="sect1"><a href="ch02s22.html">2.22. 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
7 7
        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
8
        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#d0e7410">3.7.1. Übersicht</a></span></dt><dt><span class="sect2"><a href="ch03s07.html#d0e7415">3.7.2. Basisklassifizierung</a></span></dt><dt><span class="sect2"><a href="ch03s07.html#d0e7445">3.7.3. Attribute</a></span></dt><dt><span class="sect2"><a href="ch03s07.html#d0e7476">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#d0e7488">3.8.1. Übersicht</a></span></dt><dt><span class="sect2"><a href="ch03s08.html#d0e7515">3.8.2. Struktur</a></span></dt><dt><span class="sect2"><a href="ch03s08.html#d0e7567">3.8.3. Anwendung</a></span></dt><dt><span class="sect2"><a href="ch03s08.html#d0e7610">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#d0e7675">3.9.1. Rechte für die Webshopapi</a></span></dt><dt><span class="sect2"><a href="ch03s09.html#d0e7690">3.9.2. Konfiguration</a></span></dt><dt><span class="sect2"><a href="ch03s09.html#d0e7698">3.9.3. Webshopartikel</a></span></dt><dt><span class="sect2"><a href="ch03s09.html#d0e7722">3.9.4. Bestellimport</a></span></dt><dt><span class="sect2"><a href="ch03s09.html#d0e7775">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#d0e7865">3.11.1. Konfiguration des Reklamationsmodul</a></span></dt><dt><span class="sect2"><a href="ch03s11.html#d0e7878">3.11.2. Reklamation erfassen</a></span></dt><dt><span class="sect2"><a href="ch03s11.html#d0e7896">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#d0e7911">3.12.1. So kommen die Artikel in den Einkaufswarenkorb:</a></span></dt><dt><span class="sect2"><a href="ch03s12.html#d0e7930">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#d0e8255">4.1.1. Wie sehen globale Variablen in Perl aus?</a></span></dt><dt><span class="sect2"><a href="ch04.html#d0e8356">4.1.2. Warum sind globale Variablen ein Problem?</a></span></dt><dt><span class="sect2"><a href="ch04.html#d0e8389">4.1.3. Kanonische globale Variablen</a></span></dt><dt><span class="sect2"><a href="ch04.html#d0e8777">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
8
        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#d0e7423">3.7.1. Übersicht</a></span></dt><dt><span class="sect2"><a href="ch03s07.html#d0e7428">3.7.2. Basisklassifizierung</a></span></dt><dt><span class="sect2"><a href="ch03s07.html#d0e7458">3.7.3. Attribute</a></span></dt><dt><span class="sect2"><a href="ch03s07.html#d0e7489">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#d0e7501">3.8.1. Übersicht</a></span></dt><dt><span class="sect2"><a href="ch03s08.html#d0e7528">3.8.2. Struktur</a></span></dt><dt><span class="sect2"><a href="ch03s08.html#d0e7580">3.8.3. Anwendung</a></span></dt><dt><span class="sect2"><a href="ch03s08.html#d0e7623">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#d0e7688">3.9.1. Rechte für die Webshopapi</a></span></dt><dt><span class="sect2"><a href="ch03s09.html#d0e7703">3.9.2. Konfiguration</a></span></dt><dt><span class="sect2"><a href="ch03s09.html#d0e7711">3.9.3. Webshopartikel</a></span></dt><dt><span class="sect2"><a href="ch03s09.html#d0e7735">3.9.4. Bestellimport</a></span></dt><dt><span class="sect2"><a href="ch03s09.html#d0e7788">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#d0e7878">3.11.1. Konfiguration des Reklamationsmodul</a></span></dt><dt><span class="sect2"><a href="ch03s11.html#d0e7891">3.11.2. Reklamation erfassen</a></span></dt><dt><span class="sect2"><a href="ch03s11.html#d0e7909">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#d0e7924">3.12.1. So kommen die Artikel in den Einkaufswarenkorb:</a></span></dt><dt><span class="sect2"><a href="ch03s12.html#d0e7943">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#d0e8268">4.1.1. Wie sehen globale Variablen in Perl aus?</a></span></dt><dt><span class="sect2"><a href="ch04.html#d0e8369">4.1.2. Warum sind globale Variablen ein Problem?</a></span></dt><dt><span class="sect2"><a href="ch04.html#d0e8402">4.1.3. Kanonische globale Variablen</a></span></dt><dt><span class="sect2"><a href="ch04.html#d0e8790">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
9 9
        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