Erzeugte PDF- und HTML-Varianten der Dokumentation
authorMoritz Bunkus <moritz@bunkus.org>
Wed, 11 Jan 2012 14:42:39 +0000 (15:42 +0100)
committerMoritz Bunkus <moritz@bunkus.org>
Wed, 11 Jan 2012 15:53:59 +0000 (16:53 +0100)
69 files changed:
doc/dokumentation.pdf [new file with mode: 0644]
doc/html/ch01.html [new file with mode: 0644]
doc/html/ch02.html [new file with mode: 0644]
doc/html/ch02s02.html [new file with mode: 0644]
doc/html/ch02s03.html [new file with mode: 0644]
doc/html/ch02s04.html [new file with mode: 0644]
doc/html/ch02s05.html [new file with mode: 0644]
doc/html/ch02s06.html [new file with mode: 0644]
doc/html/ch02s07.html [new file with mode: 0644]
doc/html/ch02s08.html [new file with mode: 0644]
doc/html/ch02s09.html [new file with mode: 0644]
doc/html/ch02s10.html [new file with mode: 0644]
doc/html/ch02s11.html [new file with mode: 0644]
doc/html/ch02s12.html [new file with mode: 0644]
doc/html/ch03.html [new file with mode: 0644]
doc/html/ch03s02.html [new file with mode: 0644]
doc/html/ch03s03.html [new file with mode: 0644]
doc/html/ch04.html [new file with mode: 0644]
doc/html/ch04s02.html [new file with mode: 0644]
doc/html/ch04s03.html [new file with mode: 0644]
doc/html/ch04s04.html [new file with mode: 0644]
doc/html/ch04s05.html [new file with mode: 0644]
doc/html/ch04s06.html [new file with mode: 0644]
doc/html/images/admon/blank.png [new file with mode: 0644]
doc/html/images/admon/caution.png [new file with mode: 0644]
doc/html/images/admon/caution.svg [new file with mode: 0644]
doc/html/images/admon/draft.png [new file with mode: 0644]
doc/html/images/admon/home.png [new file with mode: 0644]
doc/html/images/admon/home.svg [new file with mode: 0644]
doc/html/images/admon/important.png [new file with mode: 0644]
doc/html/images/admon/important.svg [new file with mode: 0644]
doc/html/images/admon/next.png [new file with mode: 0644]
doc/html/images/admon/next.svg [new file with mode: 0644]
doc/html/images/admon/note.png [new file with mode: 0644]
doc/html/images/admon/note.svg [new file with mode: 0644]
doc/html/images/admon/prev.png [new file with mode: 0644]
doc/html/images/admon/prev.svg [new file with mode: 0644]
doc/html/images/admon/tip.png [new file with mode: 0644]
doc/html/images/admon/tip.svg [new file with mode: 0644]
doc/html/images/admon/toc-blank.png [new file with mode: 0644]
doc/html/images/admon/toc-minus.png [new file with mode: 0644]
doc/html/images/admon/toc-plus.png [new file with mode: 0644]
doc/html/images/admon/up.png [new file with mode: 0644]
doc/html/images/admon/up.svg [new file with mode: 0644]
doc/html/images/admon/warning.png [new file with mode: 0644]
doc/html/images/admon/warning.svg [new file with mode: 0644]
doc/html/images/aquadot.jpg [new file with mode: 0644]
doc/html/images/callouts/1.png [new file with mode: 0644]
doc/html/images/callouts/10.png [new file with mode: 0644]
doc/html/images/callouts/2.png [new file with mode: 0644]
doc/html/images/callouts/3.png [new file with mode: 0644]
doc/html/images/callouts/4.png [new file with mode: 0644]
doc/html/images/callouts/5.png [new file with mode: 0644]
doc/html/images/callouts/6.png [new file with mode: 0644]
doc/html/images/callouts/7.png [new file with mode: 0644]
doc/html/images/callouts/8.png [new file with mode: 0644]
doc/html/images/callouts/9.png [new file with mode: 0644]
doc/html/images/draft.png [new file with mode: 0644]
doc/html/images/out.png [new file with mode: 0644]
doc/html/images/quoleft.gif [new file with mode: 0644]
doc/html/images/skr04-update-3804/konto3804.png [new file with mode: 0644]
doc/html/images/skr04-update-3804/konto4315.png [new file with mode: 0644]
doc/html/images/skr04-update-3804/steuer3803.png [new file with mode: 0644]
doc/html/images/skr04-update-3804/steuer3804.png [new file with mode: 0644]
doc/html/images/skr04-update-3804/steuerliste.png [new file with mode: 0644]
doc/html/images/somerights.png [new file with mode: 0644]
doc/html/index.html [new file with mode: 0644]
doc/html/style.css [new file with mode: 0644]
scripts/build_doc.sh

diff --git a/doc/dokumentation.pdf b/doc/dokumentation.pdf
new file mode 100644 (file)
index 0000000..00ec0d5
Binary files /dev/null and b/doc/dokumentation.pdf differ
diff --git a/doc/html/ch01.html b/doc/html/ch01.html
new file mode 100644 (file)
index 0000000..814031d
--- /dev/null
@@ -0,0 +1,5 @@
+<html><head>
+      <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+   <title>Kapitel 1. Aktuelle Hinweise</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="Lx-Office: Installation, Konfiguration, Entwicklung"><link rel="up" href="index.html" title="Lx-Office: Installation, Konfiguration, Entwicklung"><link rel="prev" href="index.html" title="Lx-Office: Installation, Konfiguration, Entwicklung"><link rel="next" href="ch02.html" title="Kapitel 2. Installation und Grundkonfiguration"></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 1. Aktuelle Hinweise</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="index.html">Zurück</a>&nbsp;</td><th width="60%" align="center">&nbsp;</th><td width="20%" align="right">&nbsp;<a accesskey="n" href="ch02.html">Weiter</a></td></tr></table><hr></div><div class="chapter" title="Kapitel 1. Aktuelle Hinweise"><div class="titlepage"><div><div><h2 class="title"><a name="Aktuelle-Hinweise"></a>Kapitel 1. Aktuelle Hinweise</h2></div></div></div><p>Aktuelle Installations- und Konfigurationshinweise gibt es:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>auf der Lx-Office-Homepage unter <a class="ulink" href="http://lx-office.org/index.php?id=dokumentation" target="_top">http://lx-office.org/index.php?id=dokumentation</a>
+            </p></li><li class="listitem"><p>im Lx-Office-Wiki unter Dokumentation (<a class="ulink" href="http://wiki.lx-office.org/index.php/Lx-Office_ERP" target="_top">http://wiki.lx-office.org/index.php/Lx-Office_ERP</a>)</p></li><li class="listitem"><p>im Lx-Office-Forum: <a class="ulink" href="http://www.lx-office.org/forum/" target="_top">http://www.lx-office.org/forum/</a>
+            </p></li></ul></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="index.html">Zurück</a>&nbsp;</td><td width="20%" align="center">&nbsp;</td><td width="40%" align="right">&nbsp;<a accesskey="n" href="ch02.html">Weiter</a></td></tr><tr><td width="40%" align="left" valign="top">Lx-Office: Installation, Konfiguration, Entwicklung&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 2. Installation und Grundkonfiguration</td></tr></table></div></body></html>
\ No newline at end of file
diff --git a/doc/html/ch02.html b/doc/html/ch02.html
new file mode 100644 (file)
index 0000000..17a8cfe
--- /dev/null
@@ -0,0 +1,54 @@
+<html><head>
+      <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+   <title>Kapitel 2. Installation und Grundkonfiguration</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="Lx-Office: Installation, Konfiguration, Entwicklung"><link rel="up" href="index.html" title="Lx-Office: Installation, Konfiguration, Entwicklung"><link rel="prev" href="ch01.html" title="Kapitel 1. Aktuelle Hinweise"><link rel="next" href="ch02s02.html" title="2.2. Manuelle Installation des Programmpaketes"></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 2. Installation und Grundkonfiguration</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch01.html">Zurück</a>&nbsp;</td><th width="60%" align="center">&nbsp;</th><td width="20%" align="right">&nbsp;<a accesskey="n" href="ch02s02.html">Weiter</a></td></tr></table><hr></div><div class="chapter" title="Kapitel 2. Installation und Grundkonfiguration"><div class="titlepage"><div><div><h2 class="title"><a name="config"></a>Kapitel 2. Installation und Grundkonfiguration</h2></div></div></div><div class="sect1" title="2.1. Benötigte Software und Pakete"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="Ben%C3%B6tigte-Software-und-Pakete"></a>2.1. Benötigte Software und Pakete</h2></div></div></div><div class="sect2" title="2.1.1. Betriebssystem"><div class="titlepage"><div><div><h3 class="title"><a name="Betriebssystem"></a>2.1.1. Betriebssystem</h3></div></div></div><p>Lx-Office ist für Linux konzipiert, und sollte auf jedem
+        unixoiden Betriebssystem zum Laufen zu kriegen sein. Getestet ist
+        diese Version im speziellen auf Debian und Ubuntu, grundsätzlich wurde
+        bei der Auswahl der Pakete aber darauf Rücksicht genommen, dass es
+        ohne große Probleme auf den derzeit aktuellen verbreiteten
+        Distributionen läuft.</p><p>Anfang 2012 sind das folgende Systeme, von denen bekannt ist, dass Lx-Office auf ihnen läuft:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Ubuntu 8.04 LTS Hardy Heron, 10.04 LTS Lucid Lynx bis 11.10 Oneiric Ocelot</p></li><li class="listitem"><p>Debian 5.0 Lenny und 6.0 Squeeze</p></li><li class="listitem"><p>openSUSE 11.2 und 11.3</p></li><li class="listitem"><p>SuSE Linux Enterprice Server 11</p></li><li class="listitem"><p>Fedora 13 bis 15</p></li></ul></div><p>Ubuntu 8.04 LTS hat zusätzlich die Schwierigkeit, dass die
+        Module im Archiv recht alt sind, und das viele der benötigten Module
+        nicht einfach zu installieren sind. Dafür sollte es kurz nach dem
+        Release ein eigenes .deb geben.</p><p>Alternativ dazu kann die normale Installation durchgeführt
+        werden (siehe <a class="xref" href="ch02s02.html" title="2.2. Manuelle Installation des Programmpaketes">Manuelle Installation des Programmpaketes</a>), wenn vorher
+        ein Kompatibilitätspaket installiert wird, das die fehlenden Pakete
+        bereitstellt. Das Paket ist auf <a class="ulink" href="https://sourceforge.net/projects/lx-office/files/Lx-Office%20ERP/2.6.2/" target="_top">Sourceforge</a>
+        unter dem Namen <code class="filename">lx-erp-perl-libs-compat-v2.tar.gz</code>
+        hinterlegt.</p><p>Zur Installation das Paket in das entpackte Lx-Office
+        Verzeichnis entpacken:</p><pre class="programlisting">tar xzf lx-erp-perl-libs-compat-v2.tar.gz /path/to/lx-office/</pre><p>Zusätzlich müssen dann noch die folgenden Pakete installiert
+        weerden</p><pre class="programlisting">apt-get install libbit-vector-perl libsub-exporter-perl libclone-perl libclass-factory-util-perl</pre><p>Danach sollte der Installationscheck (siehe <a class="xref" href="ch02.html#Pakete" title="2.1.2. Pakete">Pakete</a>) die enthaltenen Pakete erkennen.</p></div><div class="sect2" title="2.1.2. Pakete"><div class="titlepage"><div><div><h3 class="title"><a name="Pakete"></a>2.1.2. Pakete</h3></div></div></div><p>Zum Betrieb von Lx-Office werden zwingend ein Webserver (meist
+        Apache) und ein Datenbankserver (PostgreSQL, mindestens v8.2)
+        benötigt.</p><p>Zusätzlich benötigt Lx-Office die folgenden Perl-Pakete, die
+        nicht Bestandteil einer Standard-Perl-Installation sind:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>parent</p></li><li class="listitem"><p>Archive::Zip</p></li><li class="listitem"><p>Config::Std</p></li><li class="listitem"><p>DateTime</p></li><li class="listitem"><p>DBI</p></li><li class="listitem"><p>DBD::Pg</p></li><li class="listitem"><p>Email::Address</p></li><li class="listitem"><p>JSON</p></li><li class="listitem"><p>List::MoreUtils</p></li><li class="listitem"><p>Params::Validate</p></li><li class="listitem"><p>PDF::API2</p></li><li class="listitem"><p>Rose::Object</p></li><li class="listitem"><p>Rose::DB</p></li><li class="listitem"><p>Rose::DB::Object</p></li><li class="listitem"><p>Template</p></li><li class="listitem"><p>Text::CSV_XS</p></li><li class="listitem"><p>Text::Iconv</p></li><li class="listitem"><p>URI</p></li><li class="listitem"><p>XML::Writer</p></li><li class="listitem"><p>YAML</p></li></ul></div><p>Gegenüber Version 2.6.0 sind zu dieser Liste 2 Pakete
+        hinzugekommen, <code class="literal">URI</code> und
+        <code class="literal">XML::Writer</code> sind notwendig. Ohne startet Lx-Office
+        nicht.</p><p>Gegenüber Version 2.6.1 sind <code class="literal">parent</code>,
+        <code class="literal">DateTime</code>, <code class="literal">Rose::Object</code>,
+        <code class="literal">Rose::DB</code> und <code class="literal">Rose::DB::Object</code>
+        neu hinzugekommen. <code class="literal">IO::Wrap</code> wurde entfernt.</p><p>Gegenüber Version 2.6.3 ist <code class="literal">JSON</code> neu
+        hinzugekommen.</p><p>
+               <code class="literal">Email::Address</code> und
+        <code class="literal">List::MoreUtils</code> sind schon länger feste
+        Abhängigkeiten, wurden aber bisher mit Lx-Office mitgeliefert. Beide
+        sind auch in 2.6.1 weiterhin mit ausgeliefert, wurden in einer
+        zukünftigen Version aber aus dem Paket entfernt werden. Es wird
+        empfohlen diese Module zusammen mit den anderen als Bibliotheken zu
+        installieren.</p><p>Die zu installierenden Pakete können in den verschiedenen
+        Distributionen unterschiedlich heißen.</p><p>Für Debian oder Ubuntu benötigen Sie diese Pakete:</p><pre class="programlisting">apt-get install apache2 postgresql libparent-perl libarchive-zip-perl \
+  libdatetime-perl libdbi-perl libdbd-pg-perl libpg-perl \
+  libemail-address-perl liblist-moreutils-perl libpdf-api2-perl \
+  librose-object-perl librose-db-perl librose-db-object-perl \
+  libtemplate-perl libtext-csv-xs-perl libtext-iconv-perl liburi-perl \
+  libxml-writer-perl libyaml-perl libconfig-std-perl \
+  libparams-validate-perl libjson-perl</pre><p>Für Fedora Core benötigen Sie diese Pakete:</p><pre class="programlisting">yum install httpd postgresql-server perl-parent perl-DateTime \
+  perl-DBI perl-DBD-Pg perl-Email-Address perl-List-MoreUtils \
+  perl-PDF-API2 perl-Rose-Object perl-Rose-DB perl-Rose-DB-Object \
+  perl-Template-Toolkit perl-Text-CSV_XS perl-Text-Iconv perl-URI \
+  perl-XML-Writer perl-YAML</pre><p>Für OpenSuSE benötigen Sie diese Pakete:</p><pre class="programlisting">zypper install apache2 postgresql-server perl-Archive-Zip \
+  perl-DateTime perl-DBI perl-DBD-Pg perl-MailTools perl-List-MoreUtils \
+  perl-PDF-API2 perl-Template-Toolkit perl-Text-CSV_XS perl-Text-Iconv \
+  perl-URI perl-XML-Writer perl-YAML</pre><p>Bei openSuSE 11 ist <code class="literal">parent</code> bereits enthalten,
+        und braucht nicht nachinstalliert werden. Die
+        <code class="literal">Rose::*</code> Pakete sind derzeit nicht für SuSE gepackt,
+        und müssen anderweitig nachinstalliert werden.</p><p>Lx-Office enthält ein Script, mit dem überprüft werden kann, ob
+        alle benötigten Perl-Module installiert sind. Der Aufruf lautet wie
+        folgt:</p><pre class="programlisting">./scripts/installation_check.pl</pre></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch01.html">Zurück</a>&nbsp;</td><td width="20%" align="center">&nbsp;</td><td width="40%" align="right">&nbsp;<a accesskey="n" href="ch02s02.html">Weiter</a></td></tr><tr><td width="40%" align="left" valign="top">Kapitel 1. Aktuelle Hinweise&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;2.2. Manuelle Installation des Programmpaketes</td></tr></table></div></body></html>
\ No newline at end of file
diff --git a/doc/html/ch02s02.html b/doc/html/ch02s02.html
new file mode 100644 (file)
index 0000000..e4a8d8f
--- /dev/null
@@ -0,0 +1,21 @@
+<html><head>
+      <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+   <title>2.2. Manuelle Installation des Programmpaketes</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="Lx-Office: Installation, Konfiguration, Entwicklung"><link rel="up" href="ch02.html" title="Kapitel 2. Installation und Grundkonfiguration"><link rel="prev" href="ch02.html" title="Kapitel 2. Installation und Grundkonfiguration"><link rel="next" href="ch02s03.html" title="2.3. Lx-Office-Konfigurationsdatei"></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.2. Manuelle Installation des Programmpaketes</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch02.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="ch02s03.html">Weiter</a></td></tr></table><hr></div><div class="sect1" title="2.2. Manuelle Installation des Programmpaketes"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="Manuelle-Installation-des-Programmpaketes"></a>2.2. Manuelle Installation des Programmpaketes</h2></div></div></div><p>Die Lx-Office ERP Installationsdatei (lxoffice-erp-2.6.3.tgz) wird
+      im Dokumentenverzeichnis des Webservers (z.B.
+      <code class="filename">/var/www/html/</code>,
+      <code class="filename">/srv/www/htdocs</code> oder
+      <code class="filename">/var/www/</code>) entpackt:</p><pre class="programlisting">cd /var/www tar xvzf
+lxoffice-erp-2.6.2.tgz</pre><p>Verändern Sie evtl. noch den Namen des Verzeichnisses mit</p><pre class="programlisting">mv lxoffice-erp/ lx-erp/</pre><p>Alternativ können Sie auch einen Alias in der
+      Webserverkonfiguration benutzen, um auf das tatsächliche
+      Installationsverzeichnis zu verweisen.</p><p>Die Verzeichnisse <code class="filename">users</code>,
+      <code class="filename">spool</code> und <code class="filename">webdav</code> müssen für
+      den Benutzer beschreibbar sein, unter dem der Webserver läuft. Die
+      restlichen Dateien müssen für diesen Benutzer lesbar sein. Der
+      Benutzername ist bei verschiedenen Distributionen unterschiedlich (z.B.
+      bei Debian/Ubuntu <code class="constant">www-data</code>, bei Fedora core
+      <code class="constant">apache</code> oder bei OpenSuSE
+      <code class="constant">wwwrun</code>).</p><p>Der folgende Befehl ändert den Besitzer für die oben genannten
+      Verzeichnisse auf einem Debian/Ubuntu-System:</p><pre class="programlisting">chown -R www-data lx-office-erp/users lx-office-erp/spool lx-office-erp/webdav</pre><p>Weiterhin muss der Webserver-Benutzer im Verzeichnis
+      <code class="filename">templates</code> Verzeichnisse für jeden neuen Benutzer,
+      der in lx-office angelegt wird, anlegen dürfen:</p><pre class="programlisting">chgrp www-data lx-office-erp/templates
+chmod g+w lx-office-erp/templates</pre></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch02.html">Zurück</a>&nbsp;</td><td width="20%" align="center"><a accesskey="u" href="ch02.html">Nach oben</a></td><td width="40%" align="right">&nbsp;<a accesskey="n" href="ch02s03.html">Weiter</a></td></tr><tr><td width="40%" align="left" valign="top">Kapitel 2. Installation und Grundkonfiguration&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;2.3. Lx-Office-Konfigurationsdatei</td></tr></table></div></body></html>
\ No newline at end of file
diff --git a/doc/html/ch02s03.html b/doc/html/ch02s03.html
new file mode 100644 (file)
index 0000000..54aaec6
--- /dev/null
@@ -0,0 +1,77 @@
+<html><head>
+      <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+   <title>2.3. Lx-Office-Konfigurationsdatei</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="Lx-Office: Installation, Konfiguration, Entwicklung"><link rel="up" href="ch02.html" title="Kapitel 2. Installation und Grundkonfiguration"><link rel="prev" href="ch02s02.html" title="2.2. Manuelle Installation des Programmpaketes"><link rel="next" href="ch02s04.html" title="2.4. Anpassung der PostgreSQL-Konfiguration"></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.3. Lx-Office-Konfigurationsdatei</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch02s02.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="ch02s04.html">Weiter</a></td></tr></table><hr></div><div class="sect1" title="2.3. Lx-Office-Konfigurationsdatei"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="config.config-file"></a>2.3. Lx-Office-Konfigurationsdatei</h2></div></div></div><div class="sect2" title="2.3.1. Einführung"><div class="titlepage"><div><div><h3 class="title"><a name="config.config-file.introduction"></a>2.3.1. Einführung</h3></div></div></div><p>
+       Seit Lx-Office 2.6.3. gibt es nur noch eine Konfigurationsdatei die benötigt wird: <code class="filename">config/lx_office.conf</code> (kurz:
+       "die Hauptkonfigurationsdatei"). Diese muss bei der Erstinstallation von Lx-Office bzw. der Migration von älteren Versionen angelegt
+       werden.
+      </p><p>
+       Als Vorlage dient die Datei <code class="filename">config/lx_office.conf.default</code> (kurz: "die Default-Datei"):
+      </p><pre class="programlisting">$ cp config/lx_office.conf.default config/lx_office.conf</pre><p>
+       Die Default-Datei wird immer zuerst eingelesen. Werte, die in der Hauptkonfigurationsdatei stehen, überschreiben die
+       Werte aus der Default-Datei. Die Hauptkonfigurationsdatei muss also nur die Abschintte und Werte
+       enthalten, die von denen der Default-Datei abweichen.
+      </p><p>
+       Diese Hauptkonfigurationsdatei ist dann eine installationsspezifische Datei, d.h. sie enthält bspw. lokale Passwörter und wird auch
+       nicht im Versionsmanagement (git) verwaltet.
+      </p><p>
+       Die Konfiguration ist ferner serverabhängig, d.h. für alle Mandaten, bzw. Datenbanken gleich.
+      </p></div><div class="sect2" title="2.3.2. Abschnitte und Parameter"><div class="titlepage"><div><div><h3 class="title"><a name="config.config-file.sections-parameters"></a>2.3.2. Abschnitte und Parameter</h3></div></div></div><p>
+       Die Konfigurationsdatei besteht aus mehreren Teilen, die entsprechend kommentiert sind:
+      </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>
+                     <code class="literal">authentication</code>
+                  </p></li><li class="listitem"><p>
+                     <code class="literal">authentication/database</code>
+                  </p></li><li class="listitem"><p>
+                     <code class="literal">authentication/ldap</code>
+                  </p></li><li class="listitem"><p>
+                     <code class="literal">system</code>
+                  </p></li><li class="listitem"><p>
+                     <code class="literal">features</code>
+                  </p></li><li class="listitem"><p>
+                     <code class="literal">paths</code>
+                  </p></li><li class="listitem"><p>
+                     <code class="literal">applications</code>
+                  </p></li><li class="listitem"><p>
+                     <code class="literal">environment</code>
+                  </p></li><li class="listitem"><p>
+                     <code class="literal">print_templates</code>
+                  </p></li><li class="listitem"><p>
+                     <code class="literal">task_server</code>
+                  </p></li><li class="listitem"><p>
+                     <code class="literal">periodic_invoices</code>
+                  </p></li><li class="listitem"><p>
+                     <code class="literal">console</code>
+                  </p></li><li class="listitem"><p>
+                     <code class="literal">debug</code>
+                  </p></li></ul></div><p>
+       Die üblicherweise wichtigsten Parameter, die am Anfang einzustellen oder zu kontrollieren sind, sind:
+      </p><pre class="programlisting">[authentication]
+admin_password = geheim
+
+[authentication/database]
+host     = localhost
+port     = 5432
+db       = lxerp_auth
+user     = postgres
+password =
+
+[system]
+eur = 1
+dbcharset = UTF-8</pre><p>
+        Nutzt man wiederkehrende Rechnungen, kann man unter <code class="varname">[periodic_invoices]</code> den Login eines Benutzers angeben, der
+        nach Erstellung der Rechnungen eine entsprechende E-Mail mit Informationen über die erstellten Rechnungen bekommt.
+       </p><p>
+        Nutzt man den <a class="link" href="ch02s06.html" title="2.6. Der Task-Server">Taskserver</a> für <a class="link" href="ch03.html#features.periodic-invoices" title="3.1. Wiederkehrende Rechnungen">wiederkehrende Rechnungen</a>, muss unter <code class="varname">[task_server]</code> ein Login eines
+        Benutzers angegeben werden, mit dem sich der Taskserver an Lx-Office bei der Datenbank anmeldet, die dem Benutzer zugewiesen ist.
+       </p><p>
+        Für Entwickler finden sich unter <code class="varname">[debug]</code> wichtige Funktionen, um die Fehlersuche zu erleichtern.
+       </p></div><div class="sect2" title="2.3.3. Versionen vor 2.6.3"><div class="titlepage"><div><div><h3 class="title"><a name="config.config-file.prior-versions"></a>2.3.3. Versionen vor 2.6.3</h3></div></div></div><p>
+       In älteren Lx-Office Versionen gab es im Verzeichnis <code class="filename">config</code> die Dateien <code class="filename">authentication.pl</code>
+       und <code class="filename">lx-erp.conf</code>, die jeweils Perl-Dateien waren. Es gab auch die Möglichkeit, eine lokale Version der
+       Konfigurationsdatei zu erstellen (<code class="filename">lx-erp-local.conf</code>). Dies ist ab 2.6.3 nicht mehr möglich, aber auch nicht mehr
+       nötig.
+      </p><p>
+       Beim Update von einer Lx-Office-Version vor 2.6.3 auf 2.6.3 oder jünger müssen die Einstellungen aus den alten Konfigurationsdateien
+       manuell übertragen und die alten Konfigurationsdateien anschließend gelöscht oder verschoben werden. Ansonsten zeigt Lx-Office eine
+       entsprechende Fehlermeldung an.
+      </p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch02s02.html">Zurück</a>&nbsp;</td><td width="20%" align="center"><a accesskey="u" href="ch02.html">Nach oben</a></td><td width="40%" align="right">&nbsp;<a accesskey="n" href="ch02s04.html">Weiter</a></td></tr><tr><td width="40%" align="left" valign="top">2.2. Manuelle Installation des Programmpaketes&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;2.4. Anpassung der PostgreSQL-Konfiguration</td></tr></table></div></body></html>
\ No newline at end of file
diff --git a/doc/html/ch02s04.html b/doc/html/ch02s04.html
new file mode 100644 (file)
index 0000000..942e21c
--- /dev/null
@@ -0,0 +1,35 @@
+<html><head>
+      <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+   <title>2.4. Anpassung der PostgreSQL-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="Lx-Office: Installation, Konfiguration, Entwicklung"><link rel="up" href="ch02.html" title="Kapitel 2. Installation und Grundkonfiguration"><link rel="prev" href="ch02s03.html" title="2.3. Lx-Office-Konfigurationsdatei"><link rel="next" href="ch02s05.html" title="2.5. Webserver-Konfiguration"></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.4. Anpassung der PostgreSQL-Konfiguration</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch02s03.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="ch02s05.html">Weiter</a></td></tr></table><hr></div><div class="sect1" title="2.4. Anpassung der PostgreSQL-Konfiguration"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="Anpassung-der-PostgreSQL-Konfiguration"></a>2.4. Anpassung der PostgreSQL-Konfiguration</h2></div></div></div><p>PostgreSQL muss auf verschiedene Weisen angepasst werden.</p><div class="sect2" title="2.4.1. Zeichensätze/die Verwendung von UTF-8"><div class="titlepage"><div><div><h3 class="title"><a name="Zeichens%C3%A4tze-die-Verwendung-von-UTF-8"></a>2.4.1. Zeichensätze/die Verwendung von UTF-8</h3></div></div></div><p>Lx-Office kann komplett mit UTF-8 als Zeichensatz verwendet
+        werden. Dabei gibt es zwei Punkte zu beachten: PostgreSQL muss in
+        Version 8.2 oder neuer benutzt werden, und der
+        PostgreSQL-Datenbankcluster muss ebenfalls mit UTF-8 als Locale
+        angelegt worden sein.</p><p>Dieses ist kann überprüft werden: ist das Encoding der Datenbank &#8220;template1&#8221; &#8220;UTF8&#8221;, so kann auch Lx-Office mit UTF-8
+        betrieben werden.  Andernfalls ist es notwendig, einen neuen Datenbankcluster mit UTF-8-Encoding anzulegen und diesen zu
+        verwenden. Unter Debian und Ubuntu kann dies z.B. für PostgreSQL 8.2 mit dem folgenden Befehl getan werden:</p><pre class="programlisting">pg_createcluster --locale=de_DE.UTF-8 --encoding=UTF-8 8.2 clustername</pre><p>Die Datenbankversionsnummer muss an die tatsächlich verwendete Versionsnummer angepasst werden.</p><p>Unter anderen Distributionen gibt es ähnliche Methoden.</p><p>Wurde PostgreSQL nicht mit UTF-8 als Encoding initialisiert und
+        ist ein Neuanlegen eines weiteren Clusters nicht möglich, so kann
+        Lx-Office mit ISO-8859-15 als Encoding betrieben werden.</p><p>Das Encoding einer Datenbank kann in <span class="command"><strong>psql</strong></span> mit <code class="literal">\l</code> geprüft werden.</p></div><div class="sect2" title="2.4.2. Änderungen an Konfigurationsdateien"><div class="titlepage"><div><div><h3 class="title"><a name="%C3%84nderungen-an-Konfigurationsdateien"></a>2.4.2. Änderungen an Konfigurationsdateien</h3></div></div></div><p>In der Datei <code class="filename">postgresql.conf</code>, die je nach
+        Distribution in verschiedenen Verzeichnissen liegen kann (z.B.
+        <code class="filename">/var/lib/pgsql/data/</code> oder
+        <code class="filename">/etc/postgresql/</code>, muss sichergestellt werden, dass
+        TCP/IP-Verbindungen aktiviert sind. Das Verhalten wird über den
+        Parameter <code class="varname">listen_address</code> gesteuert. Laufen
+        PostgreSQL und Lx-Office auf demselben Rechner, so kann dort der Wert
+        <code class="literal">localhost</code> verwendet werden. Andernfalls müssen
+        Datenbankverbindungen auch von anderen Rechnern aus zugelassen werden,
+        was mit dem Wert <code class="literal">*</code> geschieht.</p><p>In der Datei <code class="filename">pg_hba.conf</code>, die im gleichen
+        Verzeichnis wie die <code class="filename">postgresql.conf</code> zu finden sein
+        sollte, müssen die Berichtigungen für den Zugriff geändert werden.
+        Hier gibt es mehrere Möglichkeiten. Eine besteht darin, lokale
+        Verbindungen immer zuzulassen:</p><pre class="programlisting">local all all trust
+host all all 127.0.0.1 255.0.0.0 trust</pre><p>Besser ist es, für eine bestimmte Datenbank Zugriff nur per
+        Passwort zuzulassen. Beispielsweise:</p><pre class="programlisting">local all lxoffice password
+host all lxoffice 127.0.0.1 255.255.255.255 password</pre></div><div class="sect2" title="2.4.3. Erweiterung für servergespeicherte Prozeduren"><div class="titlepage"><div><div><h3 class="title"><a name="Erweiterung-f%C3%BCr-servergespeicherte-Prozeduren"></a>2.4.3. Erweiterung für servergespeicherte Prozeduren</h3></div></div></div><p>In der Datenbank <code class="literal">template1</code> muss die
+        Unterstützung für servergespeicherte Prozeduren eingerichet werden.
+        Melden Sie sich dafür als Benutzer &#8220;postgres&#8221; an der Datenbank an, und
+        führen Sie die folgenden Kommandos aus:</p><pre class="programlisting">create language 'plpgsql';</pre></div><div class="sect2" title="2.4.4. Datenbankbenutzer anlegen"><div class="titlepage"><div><div><h3 class="title"><a name="Datenbankbenutzer-anlegen"></a>2.4.4. Datenbankbenutzer anlegen</h3></div></div></div><p>Wenn Sie nicht den Datenbanksuperuser &#8220;postgres&#8221; zum Zugriff
+        benutzen wollen, so sollten Sie bei PostgreSQL einen neuen Benutzer
+        anlegen. Ein Beispiel, wie Sie einen neuen Benutzer anlegen
+        können:</p><pre class="programlisting">su - postgres createuser -d -P lxoffice</pre><p>Wenn Sie später einen Datenbankzugriff konfigurieren, verändern
+        Sie den evtl. voreingestellten Benutzer &#8220;postgres&#8221; auf &#8220;lxoffice&#8221; bzw.
+        den hier gewählten Benutzernamen.</p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch02s03.html">Zurück</a>&nbsp;</td><td width="20%" align="center"><a accesskey="u" href="ch02.html">Nach oben</a></td><td width="40%" align="right">&nbsp;<a accesskey="n" href="ch02s05.html">Weiter</a></td></tr><tr><td width="40%" align="left" valign="top">2.3. Lx-Office-Konfigurationsdatei&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;2.5. Webserver-Konfiguration</td></tr></table></div></body></html>
\ No newline at end of file
diff --git a/doc/html/ch02s05.html b/doc/html/ch02s05.html
new file mode 100644 (file)
index 0000000..f1cb228
--- /dev/null
@@ -0,0 +1,103 @@
+<html><head>
+      <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+   <title>2.5. 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="Lx-Office: Installation, Konfiguration, Entwicklung"><link rel="up" href="ch02.html" title="Kapitel 2. Installation und Grundkonfiguration"><link rel="prev" href="ch02s04.html" title="2.4. Anpassung der PostgreSQL-Konfiguration"><link rel="next" href="ch02s06.html" title="2.6. 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.5. Webserver-Konfiguration</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch02s04.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="ch02s06.html">Weiter</a></td></tr></table><hr></div><div class="sect1" title="2.5. Webserver-Konfiguration"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="Apache-Konfiguration"></a>2.5. Webserver-Konfiguration</h2></div></div></div><div class="sect2" title="2.5.1. Grundkonfiguration mittels CGI"><div class="titlepage"><div><div><h3 class="title"><a name="d0e508"></a>2.5.1. Grundkonfiguration mittels CGI</h3></div></div></div><div class="note" title="Anmerkung" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Note"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Anmerkung]" src="../../../../system/docbook-xsl/images/note.png"></td><th align="left">Anmerkung</th></tr><tr><td align="left" valign="top"><p>Für einen deutlichen Performanceschub sorgt die Ausführung
+          mittels FastCGI/FCGI. Die Einrichtung wird ausführlich im Abschnitt
+          <a class="xref" href="ch02s05.html#Apache-Konfiguration.FCGI" title="2.5.2. Konfiguration für FastCGI/FCGI">Konfiguration für FastCGI/FCGI</a> beschrieben.</p></td></tr></table></div><p>Der Zugriff auf das Programmverzeichnis muss in der Apache
+        Webserverkonfigurationsdatei <code class="literal">httpd.conf</code> eingestellt
+        werden. Fügen Sie den folgenden Abschnitt dieser Datei oder einer
+        anderen Datei hinzu, die beim Starten des Webservers eingelesen
+        wird:</p><pre class="programlisting">AddHandler cgi-script .pl
+Alias /lx-erp/ /var/www/lx-erp/
+
+&lt;Directory /var/www/lx-erp&gt;
+ Options ExecCGI
+ Includes FollowSymlinks
+&lt;/Directory&gt;
+
+&lt;Directory /var/www/lx-erp/users&gt;
+ Order Deny,Allow
+ Deny from All
+&lt;/Directory&gt;</pre><p>Ersetzen Sie dabei die Pfade durch diejenigen, in die Sie vorher
+        das Lx-Office-Archiv entpacket haben.</p><div class="note" title="Anmerkung" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Note"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Anmerkung]" src="../../../../system/docbook-xsl/images/note.png"></td><th align="left">Anmerkung</th></tr><tr><td align="left" valign="top"><p>Vor den einzelnen Optionen muss bei einigen Distributionen ein Plus &#8216;<code class="literal">+</code>&#8217; gesetzt werden.</p></td></tr></table></div><p>Auf einigen Webservern werden manchmal die Grafiken und
+        Style-Sheets nicht ausgeliefert. In solchen Fällen hat es oft
+        geholfen, die folgende Option in die Konfiguration aufzunehmen:</p><pre class="programlisting">EnableSendfile Off</pre></div><div class="sect2" title="2.5.2. Konfiguration für FastCGI/FCGI"><div class="titlepage"><div><div><h3 class="title"><a name="Apache-Konfiguration.FCGI"></a>2.5.2. Konfiguration für FastCGI/FCGI</h3></div></div></div><div class="sect3" title="2.5.2.1. Was ist FastCGI?"><div class="titlepage"><div><div><h4 class="title"><a name="Apache-Konfiguration.FCGI.WasIstEs"></a>2.5.2.1. Was ist FastCGI?</h4></div></div></div><p>Direkt aus <a class="ulink" href="http://de.wikipedia.org/wiki/FastCGI" target="_top">Wikipedia</a>
+          kopiert:</p><p>
+                  [<span class="citation"> FastCGI ist ein Standard für die Einbindung
+          externer Software zur Generierung dynamischer Webseiten in einem
+          Webserver. FastCGI ist vergleichbar zum Common Gateway Interface
+          (CGI), wurde jedoch entwickelt, um dessen Performance-Probleme zu
+          umgehen. </span>]
+               </p></div><div class="sect3" title="2.5.2.2. Warum FastCGI?"><div class="titlepage"><div><div><h4 class="title"><a name="Apache-Konfiguration.FCGI.Warum"></a>2.5.2.2. Warum FastCGI?</h4></div></div></div><p>Perl Programme (wie Lx-Office eines ist) werden nicht statisch
+          kompiliert. Stattdessen werden die Quelldateien bei jedem Start
+          übersetzt, was bei kurzen Laufzeiten einen Großteil der Laufzeit
+          ausmacht. Während SQL Ledger einen Großteil der Funktionalität in
+          einzelne Module kapselt, um immer nur einen kleinen Teil laden zu
+          müssen, ist die Funktionalität von Lx-Office soweit gewachsen, dass
+          immer mehr Module auf den Rest des Programms zugreifen. Zusätzlich
+          benutzen wir umfangreiche Bibliotheken um Funktionaltät nicht selber
+          entwickeln zu müssen, die zusätzliche Ladezeit kosten. All dies
+          führt dazu dass ein Lx-Office Aufruf der Kernmasken mittlerweile
+          deutlich länger dauert als früher, und dass davon 90% für das Laden
+          der Module verwendet wird.</p><p>Mit FastCGI werden nun die Module einmal geladen, und danach
+          wird nur die eigentliche Programmlogik ausgeführt.</p></div><div class="sect3" title="2.5.2.3. Getestete Kombinationen aus Webservern und Plugin"><div class="titlepage"><div><div><h4 class="title"><a name="Apache-Konfiguration.FCGI.WebserverUndPlugin"></a>2.5.2.3. Getestete Kombinationen aus Webservern und Plugin</h4></div></div></div><p>Folgende Kombinationen sind getestet:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Apache 2.2.11 (Ubuntu) und mod_fcgid.</p></li><li class="listitem"><p>Apache 2.2.11 (Ubuntu) und mod_fastcgi.</p></li></ul></div><p>Dabei wird mod_fcgid empfohlen, weil mod_fastcgi seit geraumer
+          Zeit nicht mehr weiter entwickelt wird. Im Folgenden wird auf
+          mod_fastcgi nicht mehr explizit eingegangen.</p><p>Als Perl Backend wird das Modul <code class="filename">FCGI.pm</code>
+          verwendet.</p><div class="warning" title="Warnung" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Warning"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Warnung]" src="../../../../system/docbook-xsl/images/warning.png"></td><th align="left">Warnung</th></tr><tr><td align="left" valign="top"><p>
+             FCGI 0.69 und höher ist extrem strict in der Behandlung von Unicode, und verweigert bestimmte Eingaben von Lx-Office. Falls es
+             Probleme mit Umlauten in Ihrere Installation gibt, muss auf die Vorgängerversion FCGI 0.68 ausgewichen werden.
+            </p><p>
+             Mit CPAN lässt sie sich die Vorgängerversion wie folgt installieren:
+            </p><pre class="programlisting">force install M/MS/MSTROUT/FCGI-0.68.tar.gz</pre></td></tr></table></div></div><div class="sect3" title="2.5.2.4. Konfiguration des Webservers"><div class="titlepage"><div><div><h4 class="title"><a name="Apache-Konfiguration.FCGI.Konfiguration"></a>2.5.2.4. Konfiguration des Webservers</h4></div></div></div><p>Bevor Sie versuchen, eine Lx-Office Installation unter FCGI
+          laufen zu lassen, empfliehlt es sich die Installation ersteinmal
+          unter CGI aufzusetzen. FCGI macht es nicht einfach Fehler zu
+          debuggen die beim ersten aufsetzen auftreten können. Sollte die
+          Installation schon funktionieren, lesen Sie weiter.</p><p>Zuerst muss das FastCGI-Modul aktiviert werden. Dies kann
+          unter Debian/Ubuntu z.B. mit folgendem Befehl geschehen:</p><pre class="programlisting">a2enmod fcgid</pre><p>Die Konfiguration für die Verwendung von Lx-Office mit FastCGI
+          erfolgt durch Anpassung der vorhandenen <code class="function">Alias</code>-
+          und <code class="function">Directory</code>-Direktiven. Dabei wird zwischen
+          dem Installationspfad von Lx-Office im Dateisystem
+          ("<code class="filename">/path/to/lx-office-erp</code>") und der URL
+          unterschieden, unter der Lx-Office im Webbrowser erreichbar ist
+          ("<code class="filename">/url/for/lx-office-erp</code>").</p><p>Folgender Konfigurationsschnipsel funktioniert mit
+          mod_fastcgi:</p><pre class="programlisting">AliasMatch ^/url/for/lx-office-erp/[^/]+\.pl /path/to/lx-office-erp/dispatcher.fcgi
+Alias       /url/for/lx-office-erp/          /path/to/lx-office-erp/
+
+&lt;Directory /path/to/lx-office-erp&gt;
+  AllowOverride All
+  Options ExecCGI Includes FollowSymlinks
+  Order Allow,Deny
+  Allow from All
+&lt;/Directory&gt;
+
+&lt;DirectoryMatch /path/to/lx-office-erp/users&gt;
+  Order Deny,Allow
+  Deny from All
+&lt;/DirectoryMatch&gt;</pre><p>Seit mod_fcgid-Version 2.6.3 gelten sehr kleine Grenzen für
+          die maximale Größe eines Requests. Diese sollte wie folgt
+          hochgesetzt werden:</p><pre class="programlisting">FcgidMaxRequestLen 10485760</pre><p>Das ganze sollte dann so aussehen:</p><pre class="programlisting">AddHandler fcgid-script .fpl
+AliasMatch ^/url/for/lx-office-erp/[^/]+\.pl /path/to/lx-office-erp/dispatcher.fpl
+Alias       /url/for/lx-office-erp/          /path/to/lx-office-erp/
+FcgidMaxRequestLen 10485760
+
+&lt;Directory /path/to/lx-office-erp&gt;
+  AllowOverride All
+  Options ExecCGI Includes FollowSymlinks
+  Order Allow,Deny
+  Allow from All
+&lt;/Directory&gt;
+
+&lt;DirectoryMatch /path/to/lx-office-erp/users&gt;
+  Order Deny,Allow
+  Deny from All
+&lt;/DirectoryMatch&gt;</pre><p>Hierdurch wird nur ein zentraler Dispatcher gestartet. Alle
+          Zugriffe auf die einzelnen Scripte werden auf diesen umgeleitet.
+          Dadurch, dass zur Laufzeit öfter mal Scripte neu geladen werden,
+          gibt es hier kleine Performance-Einbußen.</p><p>Es ist möglich, die gleiche Lx-Office Version parallel unter
+          CGI und FastCGI zu betreiben. Dafür bleiben die Directorydirektiven
+          wie oben beschrieben, die URLs werden aber umgeleitet:</p><pre class="programlisting"># Zugriff über CGI
+Alias       /url/for/lx-office-erp                /path/to/lx-office-erp
+
+# Zugriff mit mod_fcgid:
+AliasMatch ^/url/for/lx-office-erp-fcgid/[^/]+\.pl /path/to/lx-office-erp/dispatcher.fpl
+Alias       /url/for/lx-office-erp-fcgid/          /path/to/lx-office-erp/</pre><p>Dann ist unter <code class="filename">/url/for/lx-office-erp/</code> die normale Version erreichbar, und unter
+          <code class="constant">/url/for/lx-office-erp-fcgid/</code> die FastCGI-Version.</p></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch02s04.html">Zurück</a>&nbsp;</td><td width="20%" align="center"><a accesskey="u" href="ch02.html">Nach oben</a></td><td width="40%" align="right">&nbsp;<a accesskey="n" href="ch02s06.html">Weiter</a></td></tr><tr><td width="40%" align="left" valign="top">2.4. Anpassung der PostgreSQL-Konfiguration&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;2.6. Der Task-Server</td></tr></table></div></body></html>
\ No newline at end of file
diff --git a/doc/html/ch02s06.html b/doc/html/ch02s06.html
new file mode 100644 (file)
index 0000000..4fe9a32
--- /dev/null
@@ -0,0 +1,62 @@
+<html><head>
+      <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+   <title>2.6. Der Task-Server</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="Lx-Office: Installation, Konfiguration, Entwicklung"><link rel="up" href="ch02.html" title="Kapitel 2. Installation und Grundkonfiguration"><link rel="prev" href="ch02s05.html" title="2.5. Webserver-Konfiguration"><link rel="next" href="ch02s07.html" title="2.7. Benutzerauthentifizierung und Administratorpasswort"></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.6. Der Task-Server</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch02s05.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="ch02s07.html">Weiter</a></td></tr></table><hr></div><div class="sect1" title="2.6. Der Task-Server"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="config.task-server"></a>2.6. Der Task-Server</h2></div></div></div><p>Der Task-Server ist ein Prozess, der im Hintergrund läuft, in
+      regelmäßigen Abständen nach abzuarbeitenden Aufgaben sucht und diese zu
+      festgelegten Zeitpunkten abarbeitet (ähnlich wie Cron). Dieser Prozess
+      wird bisher nur für die Erzeugung der wiederkehrenden Rechnungen
+      benutzt, wird aber in Zukunft deutlich mehr Aufgaben übertragen
+      bekommen.</p><div class="sect2" title="2.6.1. Verfügbare und notwendige Konfigurationsoptionen"><div class="titlepage"><div><div><h3 class="title"><a name="Konfiguration-des-Task-Servers"></a>2.6.1. Verfügbare und notwendige Konfigurationsoptionen</h3></div></div></div><p>Die Konfiguration erfolgt über den Abschnitt
+        <code class="literal">[task_server]</code> in der Datei
+        <code class="filename">config/lx_office.conf</code>. Die dort verfügbaren
+        Optionen sind:</p><div class="variablelist"><dl><dt><span class="term">
+                     <code class="varname">login</code>
+                  </span></dt><dd><p>
+            gültiger Lx-Office-Benutzername, der benutzt wird, um die zu verwendende Datenbankverbindung auszulesen. Der Benutzer muss in
+            der Administration angelegt werden. Diese Option muss angegeben werden.
+           </p></dd><dt><span class="term">
+                     <code class="varname">run_as</code>
+                  </span></dt><dd><p>
+             Wird der Server vom Systembenutzer <code class="literal">root</code> gestartet, so wechselt er auf den mit <code class="literal">run_as</code>
+             angegebenen Systembenutzer.  Der Systembenutzer muss dieselben Lese- und Schreibrechte haben, wie auch der Webserverbenutzer
+             (siehe see <a class="xref" href="ch02s02.html" title="2.2. Manuelle Installation des Programmpaketes">Manuelle Installation des Programmpaketes</a>). Daher ist es sinnvoll, hier denselben Systembenutzer
+             einzutragen, unter dem auch der Webserver läuft.
+            </p></dd><dt><span class="term">
+                     <code class="varname">debug</code>
+                  </span></dt><dd><p>
+             Schaltet Debug-Informationen an und aus.
+            </p></dd></dl></div></div><div class="sect2" title="2.6.2. Automatisches Starten des Task-Servers beim Booten"><div class="titlepage"><div><div><h3 class="title"><a name="Einbinden-in-den-Boot-Prozess"></a>2.6.2. Automatisches Starten des Task-Servers beim Booten</h3></div></div></div><p>Der Task-Server verhält sich von seinen Optionen her wie ein
+        reguläres SystemV-kompatibles Boot-Script. Außerdem wechselt er beim
+        Starten automatisch in das Lx-Office-Installationsverzeichnis.</p><p>Deshalb ist es möglich, ihn durch Setzen eines symbolischen
+        Links aus einem der Runlevel-Verzeichnisse heraus in den Boot-Prozess
+        einzubinden. Da das bei neueren Linux-Distributionen aber nicht
+        zwangsläufig funktioniert, werden auch Start-Scripte mitgeliefert, die
+        anstelle eines symbolischen Links verwendet werden können.</p><div class="sect3" title="2.6.2.1. SystemV-basierende Systeme (z.B. Debian, OpenSuSE, Fedora Core)"><div class="titlepage"><div><div><h4 class="title"><a name="d0e692"></a>2.6.2.1. SystemV-basierende Systeme (z.B. Debian, OpenSuSE, Fedora
+          Core)</h4></div></div></div><p>Kopieren Sie die Datei
+          <code class="filename">scripts/boot/system-v/lx-office-task-server</code>
+          nach <code class="filename">/etc/init.d/lx-office-task-server</code>. Passen
+          Sie in der kopierten Datei den Pfad zum Task-Server an (Zeile
+          <code class="literal">DAEMON=....</code>). Binden Sie das Script in den
+          Boot-Prozess ein. Dies ist distributionsabhängig:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Debian-basierende Systeme:</p><pre class="programlisting">update-rc.d lx-office-task-server defaults
+# Nur bei Debian Squeeze und neuer:
+insserv lx-office-task-server</pre></li><li class="listitem"><p>OpenSuSE und Fedora Core:</p><pre class="programlisting">chkconfig --add lx-office-task-server</pre></li></ul></div><p>Danach kann der Task-Server mit dem folgenden Befehl gestartet werden: <span class="command"><strong>/etc/init.d/lx-office-task-server
+          start</strong></span>
+               </p></div><div class="sect3" title="2.6.2.2. Upstart-basierende Systeme (z.B. Ubuntu)"><div class="titlepage"><div><div><h4 class="title"><a name="d0e722"></a>2.6.2.2. Upstart-basierende Systeme (z.B. Ubuntu)</h4></div></div></div><p>Kopieren Sie die Datei
+          <code class="filename">scripts/boot/upstart/lx-office-task-server.conf</code>
+          nach <code class="filename">/etc/init/lx-office-task-server.conf</code>.
+          Passen Sie in der kopierten Datei den Pfad zum Task-Server an (Zeile
+          <code class="literal">exec ....</code>).</p><p>Danach kann der Task-Server mit dem folgenden Befehl gestartet werden: <span class="command"><strong>service lx-office-task-server
+          start</strong></span>
+               </p></div></div><div class="sect2" title="2.6.3. Wie der Task-Server gestartet und beendet wird"><div class="titlepage"><div><div><h3 class="title"><a name="Prozesskontrolle"></a>2.6.3. Wie der Task-Server gestartet und beendet wird</h3></div></div></div><p>Der Task-Server wird wie folgt kontrolliert:</p><pre class="programlisting">./scripts/task_server.pl Befehl</pre><p>
+               <code class="literal">Befehl</code> ist dabei eine der folgenden
+        Optionen:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>
+                     <code class="literal">start</code> startet eine neue Instanz des
+            Task-Servers. Die Prozess-ID wird innerhalb des
+            <code class="filename">users</code>-Verzeichnisses abgelegt.</p></li><li class="listitem"><p>
+                     <code class="literal">stop</code> beendet einen laufenden
+            Task-Server.</p></li><li class="listitem"><p>
+                     <code class="literal">restart</code> beendet und startet ihn
+            neu.</p></li><li class="listitem"><p>
+                     <code class="literal">status</code> berichtet, ob der Task-Server
+            läuft.</p></li></ul></div><p>Der Task-Server wechselt beim Starten automatisch in das
+        Lx-Office-Installationsverzeichnis.</p><p>Dieselben Optionen können auch für die SystemV-basierenden
+        Runlevel-Scripte benutzt werden (siehe oben).</p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch02s05.html">Zurück</a>&nbsp;</td><td width="20%" align="center"><a accesskey="u" href="ch02.html">Nach oben</a></td><td width="40%" align="right">&nbsp;<a accesskey="n" href="ch02s07.html">Weiter</a></td></tr><tr><td width="40%" align="left" valign="top">2.5. Webserver-Konfiguration&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;2.7. Benutzerauthentifizierung und Administratorpasswort</td></tr></table></div></body></html>
\ No newline at end of file
diff --git a/doc/html/ch02s07.html b/doc/html/ch02s07.html
new file mode 100644 (file)
index 0000000..cad0eb8
--- /dev/null
@@ -0,0 +1,71 @@
+<html><head>
+      <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+   <title>2.7. Benutzerauthentifizierung und Administratorpasswort</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="Lx-Office: Installation, Konfiguration, Entwicklung"><link rel="up" href="ch02.html" title="Kapitel 2. Installation und Grundkonfiguration"><link rel="prev" href="ch02s06.html" title="2.6. Der Task-Server"><link rel="next" href="ch02s08.html" title="2.8. Benutzer- und Gruppenverwaltung"></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. Benutzerauthentifizierung und Administratorpasswort</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. Benutzerauthentifizierung und Administratorpasswort"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="Benutzerauthentifizierung-und-Administratorpasswort"></a>2.7. Benutzerauthentifizierung und Administratorpasswort</h2></div></div></div><p>Informationen über die Einrichtung der Benutzerauthentifizierung,
+      über die Verwaltung von Gruppen und weitere Einstellungen</p><div class="sect2" title="2.7.1. Grundlagen zur Benutzerauthentifizierung"><div class="titlepage"><div><div><h3 class="title"><a name="Grundlagen-zur-Benutzerauthentifizierung"></a>2.7.1. Grundlagen zur Benutzerauthentifizierung</h3></div></div></div><p>Lx-Office verwaltet die Benutzerinformationen in einer
+        Datenbank, die im folgenden &#8220;Authentifizierungsdatenbank&#8221; genannt
+        wird. Für jeden Benutzer kann dort eine eigene Datenbank für die
+        eigentlichen Finanzdaten hinterlegt sein. Diese beiden Datenbanken
+        können, müssen aber nicht unterschiedlich sein.</p><p>Im einfachsten Fall gibt es für Lx-Office nur eine einzige
+        Datenbank, in der sowohl die Benutzerinformationen als auch die Daten
+        abgelegt werden.</p><p>Zusätzlich ermöglicht es Lx-Office, dass die Benutzerpasswörter
+        entweder gegen die Authentifizierungsdatenbank oder gegen einen
+        LDAP-Server überprüft werden.</p><p>Welche Art der Passwortüberprüfung Lx-Office benutzt und wie
+        Lx-Office die Authentifizierungsdatenbank erreichen kann, wird in der
+        Konfigurationsdatei <code class="filename">config/lx_office.conf</code>
+        festgelegt. Diese muss bei der Installation und bei einem Upgrade von
+        einer Version vor v2.6.0 angelegt werden. Eine
+        Beispielkonfigurationsdatei
+        <code class="filename">config/lx_office.conf.default</code> existiert, die als
+        Vorlage benutzt werden kann.</p></div><div class="sect2" title="2.7.2. Administratorpasswort"><div class="titlepage"><div><div><h3 class="title"><a name="Administratorpasswort"></a>2.7.2. Administratorpasswort</h3></div></div></div><p>Das Passwort, das zum Zugriff auf das Aministrationsinterface benutzt wird, wird ebenfalls in dieser Datei gespeichert. Es
+        kann auch nur dort und nicht mehr im Administrationsinterface selber geändert werden. Der Parameter dazu heißt
+        <code class="varname">admin_password</code> im Abschnitt <code class="varname">[authentication]</code>.</p></div><div class="sect2" title="2.7.3. Authentifizierungsdatenbank"><div class="titlepage"><div><div><h3 class="title"><a name="Authentifizierungsdatenbank"></a>2.7.3. Authentifizierungsdatenbank</h3></div></div></div><p>Die Verbindung zur Authentifizierungsdatenbank wird mit den Parametern in <code class="varname">[authentication/database]</code>
+        konfiguriert.  Hier sind die folgenden Parameter anzugeben:</p><div class="variablelist"><dl><dt><span class="term">
+                     <code class="literal">host</code>
+                  </span></dt><dd><p>Der Rechnername oder die IP-Adresse des Datenbankservers</p></dd><dt><span class="term">
+                     <code class="literal">port</code>
+                  </span></dt><dd><p>Die Portnummer des Datenbankservers, meist 5432</p></dd><dt><span class="term">
+                     <code class="literal">db</code>
+                  </span></dt><dd><p>Der Name der Authentifizierungsdatenbank</p></dd><dt><span class="term">
+                     <code class="literal">user</code>
+                  </span></dt><dd><p>Der Benutzername, mit dem sich Lx-Office beim Datenbankserver anmeldet (z.B. "<code class="literal">postgres</code>")</p></dd><dt><span class="term">
+                     <code class="literal">password</code>
+                  </span></dt><dd><p>Das Passwort für den Datenbankbenutzer</p></dd></dl></div><p>Die Datenbank muss noch nicht existieren. Lx-Office kann sie
+        automatisch anlegen (mehr dazu siehe unten).</p></div><div class="sect2" title="2.7.4. Passwortüberprüfung"><div class="titlepage"><div><div><h3 class="title"><a name="Passwort%C3%BCberpr%C3%BCfung"></a>2.7.4. Passwortüberprüfung</h3></div></div></div><p>Lx-Office unterstützt Passwortüberprüfung auf zwei Arten: gegen die Authentifizierungsdatenbank und gegen einen externen LDAP-
+        oder Active-Directory-Server. Welche davon benutzt wird, regelt der Parameter <code class="varname">module</code> im Abschnitt
+        <code class="varname">[authentication]</code>.</p><p>Sollen die Benutzerpasswörter in der Authentifizierungsdatenbank gespeichert werden, so muss der Parameter
+        <code class="varname">module</code> den Wert <code class="literal">DB</code> enthalten. In diesem Fall können sowohl der Administrator als auch die
+        Benutzer selber ihre Psaswörter in Lx-Office ändern.</p><p>Soll hingegen ein externer LDAP- oder Active-Directory-Server benutzt werden, so muss der Parameter <code class="varname">module</code>
+        auf <code class="literal">LDAP</code> gesetzt werden. In diesem Fall müssen zusätzliche Informationen über den LDAP-Server im Abschnitt
+        <code class="literal">[authentication/ldap]</code> angegeben werden:</p><div class="variablelist"><dl><dt><span class="term">
+                     <code class="literal">host</code>
+                  </span></dt><dd><p>Der Rechnername oder die IP-Adresse des LDAP- oder Active-Directory-Servers. Diese Angabe ist zwingend
+            erforderlich.</p></dd><dt><span class="term">
+                     <code class="literal">port</code>
+                  </span></dt><dd><p>Die Portnummer des LDAP-Servers; meist 389.</p></dd><dt><span class="term">
+                     <code class="literal">tls</code>
+                  </span></dt><dd><p>Wenn Verbindungsverschlüsselung gewünscht ist, so diesen Wert auf &#8216;<code class="literal">1</code>&#8217; setzen, andernfalls auf
+            &#8216;<code class="literal">0</code>&#8217; belassen</p></dd><dt><span class="term">
+                     <code class="literal">attribute</code>
+                  </span></dt><dd><p>Das LDAP-Attribut, in dem der Benutzername steht, den der Benutzer eingegeben hat. Für Active-Directory-Server ist dies
+            meist &#8216;<code class="literal">sAMAccountName</code>&#8217;, für andere LDAP-Server hingegen &#8216;<code class="literal">uid</code>&#8217;. Diese Angabe ist zwingend
+            erforderlich.</p></dd><dt><span class="term">
+                     <code class="literal">base_dn</code>
+                  </span></dt><dd><p>Der Abschnitt des LDAP-Baumes, der durchsucht werden soll. Diese Angabe ist zwingend erforderlich.</p></dd><dt><span class="term">
+                     <code class="literal">filter</code>
+                  </span></dt><dd><p>Ein optionaler LDAP-Filter.  Enthält dieser Filter das Wort <code class="literal">&lt;%login%&gt;</code>, so wird dieses durch den
+            vom Benutzer eingegebenen Benutzernamen ersetzt. Andernfalls wird der LDAP-Baum nach einem Element durchsucht, bei dem das oben
+            angegebene Attribut mit dem Benutzernamen identisch ist.</p></dd><dt><span class="term">
+                     <code class="literal">bind_dn</code> und <code class="literal">bind_password</code>
+                  </span></dt><dd><p>Wenn der LDAP-Server eine Anmeldung erfordert, bevor er durchsucht werden kann (z.B. ist dies bei Active-Directory-Servern
+            der Fall), so kann diese hier angegeben werden. Für Active-Directory-Server kann als &#8216;<code class="literal">bind_dn</code>&#8217; entweder eine
+            komplette LDAP-DN wie z.B. &#8216;<code class="literal">cn=Martin Mustermann,cn=Users,dc=firmendomain</code>&#8217; auch nur der volle Name des
+            Benutzers eingegeben werden; in diesem Beispiel also &#8216;<code class="literal">Martin Mustermann</code>&#8217;.</p></dd></dl></div></div><div class="sect2" title="2.7.5. Name des Session-Cookies"><div class="titlepage"><div><div><h3 class="title"><a name="Name-des-Session-Cookies"></a>2.7.5. Name des Session-Cookies</h3></div></div></div><p>Sollen auf einem Server mehrere Lx-Office-Installationen aufgesetzt werden, so müssen die Namen der Session-Cookies für alle
+        Installationen unterschiedlich sein. Der Name des Cookies wird mit dem Parameter <code class="varname">cookie_name</code> im Abschnitt
+        <code class="varname">[authentication]</code>gesetzt.</p><p>Diese Angabe ist optional, wenn nur eine Installation auf dem
+        Server existiert.</p></div><div class="sect2" title="2.7.6. Anlegen der Authentifizierungsdatenbank"><div class="titlepage"><div><div><h3 class="title"><a name="Anlegen-der-Authentifizierungsdatenbank"></a>2.7.6. Anlegen der Authentifizierungsdatenbank</h3></div></div></div><p>Nachdem alle Einstellungen in
+        <code class="filename">config/lx_office.conf</code> vorgenommen wurden, muss
+        Lx-Office die Authentifizierungsdatenbank anlegen. Dieses geschieht
+        automatisch, wenn Sie sich im Administrationsmodul anmelden, das unter
+        der folgenden URL erreichbar sein sollte:</p><p>
+               <a class="ulink" href="http://localhost/lx-erp/admin.pl" target="_top">http://localhost/lx-erp/admin.pl</a>
+            </p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch02s06.html">Zurück</a>&nbsp;</td><td width="20%" align="center"><a accesskey="u" href="ch02.html">Nach oben</a></td><td width="40%" align="right">&nbsp;<a accesskey="n" href="ch02s08.html">Weiter</a></td></tr><tr><td width="40%" align="left" valign="top">2.6. Der Task-Server&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;2.8. Benutzer- und Gruppenverwaltung</td></tr></table></div></body></html>
\ No newline at end of file
diff --git a/doc/html/ch02s08.html b/doc/html/ch02s08.html
new file mode 100644 (file)
index 0000000..7a8f386
--- /dev/null
@@ -0,0 +1,78 @@
+<html><head>
+      <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+   <title>2.8. Benutzer- und Gruppenverwaltung</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="Lx-Office: Installation, Konfiguration, Entwicklung"><link rel="up" href="ch02.html" title="Kapitel 2. Installation und Grundkonfiguration"><link rel="prev" href="ch02s07.html" title="2.7. Benutzerauthentifizierung und Administratorpasswort"><link rel="next" href="ch02s09.html" title="2.9. Drucken mit Lx-Office"></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.8. Benutzer- und Gruppenverwaltung</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch02s07.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="ch02s09.html">Weiter</a></td></tr></table><hr></div><div class="sect1" title="2.8. Benutzer- und Gruppenverwaltung"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="Benutzer--und-Gruppenverwaltung"></a>2.8. Benutzer- und Gruppenverwaltung</h2></div></div></div><p>Nach der Installation müssen Benutzer, Gruppen und Datenbanken
+      angelegt werden. Dieses geschieht im Administrationsmenü, das Sie unter
+      folgender URL finden:</p><p>
+            <a class="ulink" href="http://localhost/lx-erp/admin.pl" target="_top">http://localhost/lx-erp/admin.pl</a>
+         </p><p>Verwenden Sie zur Anmeldung das Password, dass Sie in der Datei
+      <code class="filename">config/lx_office.conf</code> eingetragen haben.</p><div class="sect2" title="2.8.1. Zusammenhänge"><div class="titlepage"><div><div><h3 class="title"><a name="Zusammenh%C3%A4nge"></a>2.8.1. Zusammenhänge</h3></div></div></div><p>Lx-Office verwendet eine Datenbank zum Speichern all seiner
+        Informationen wie Kundendaten, Artikel, Angebote, Rechnungen etc. Um
+        mit Lx-Office arbeiten zu können, muss eine Person einen
+        Benutzeraccount haben. Jedem Benutzeraccount wiederum wird genau eine
+        Datenbank zugewiesen, mit der dieser Benutzer arbeiten kann. Es ist
+        möglich und normal, dass mehreren Benutzern die selbe Datenbank
+        zugewiesen wird, sodass sie alle mit den selben Daten arbeiten
+        können.</p><p>Die Basisdaten der Benutzer, die in der Administration
+        eingegeben werden können, werden in einer zweiten Datenbank
+        gespeichert, der bereits erwähnten Authentifizierungsdatenbank. Diese
+        ist also den Produktivdaten enthaltenden Datenbanken vorgeschaltet.
+        Pro Lx-Office-Installation gibt es nur eine
+        Authentifizierungsdatenbank, aber beliebig viele Datenbanken mit
+        Firmendaten.</p><p>Lx-Office kann seinen Benutzern Zugriff auf bestimmte
+        Funktionsbereiche erlauben oder verbieten. Wird der Zugriff nicht
+        gestattet, so werden der entsprechenden Menüpunkte auch nicht
+        angezeigt. Diese Rechte werden ebenfalls in der
+        Authentifizierungsdatenbank gespeichert.</p><p>Um Rechte verteilen zu können, verwendet Lx-Office ein
+        Gruppen-Prinzip. Einer Gruppe kann der Zugriff auf bestimmte Bereiche
+        erlaubt werden. Ein Benutzer wiederum kann Mitglied in einer oder
+        mehrerer Gruppen sein. Der Benutzer hat Zugriff auf alle diejenigen
+        Funktionen, die mindestens einer Gruppe erlaubt sind, in der der
+        Benutzer Mitglied ist.</p><p>Die allgemeine Reihenfolge, in der Datenbanken, Gruppen und
+        Benutzer angelegt werden sollten, lautet:</p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p>Datenbank anlegen</p></li><li class="listitem"><p>Gruppen anlegen</p></li><li class="listitem"><p>Benutzer anlegen</p></li><li class="listitem"><p>Benutzer den Gruppen zuordnen</p></li></ol></div></div><div class="sect2" title="2.8.2. Datenbanken anlegen"><div class="titlepage"><div><div><h3 class="title"><a name="Datenbanken-anlegen"></a>2.8.2. Datenbanken anlegen</h3></div></div></div><p>Zuerst muss eine Datenbank angelegt werden. Verwenden Sie für
+        den Datenbankzugriff den vorhin angelegten Benutzer (in unseren
+        Beispielen ist dies &#8216;<code class="literal">lxoffice</code>&#8217;).</p><p>Wenn Sie für die Lx-Office-Installation nicht den europäischen
+        Schriftsatz ISO-8859-15 sondern UTF-8 (Unicode) benutzen wollen, so
+        müssen Sie vor dem Anlegen der Datenbank in der Datei
+        <code class="filename">config/lx_office.conf</code> die Variable
+        <code class="literal">dbcharset</code> im Abschnitt <code class="literal">system</code>
+        auf den Wert &#8216;<code class="literal">UTF-8</code>&#8217; setzen. Zusätzlich muss beim
+        Anlegen der Datenbank &#8216;<code class="literal">UTF-8 Unicode</code>&#8217; als
+        Schriftsatz ausgewählt werden.</p><p>Bitte beachten Sie, dass alle Datenbanken den selben Zeichensatz
+        verwenden müssen, da diese Einstellungen momentan global in Lx-Office
+        vorgenommen wird und nicht nach Datenbank unterschieden werden kann.
+        Auch die Authentifizierungsdatenbank muss mit diesem Zeichensatz
+        angelegt worden sein.</p></div><div class="sect2" title="2.8.3. Gruppen anlegen"><div class="titlepage"><div><div><h3 class="title"><a name="Gruppen-anlegen"></a>2.8.3. Gruppen anlegen</h3></div></div></div><p>Eine Gruppe wird in der Gruppenverwaltung angelegt. Ihr muss ein
+        Name gegeben werden, eine Beschreibung ist hingegen optional. Nach dem
+        Anlegen können Sie die verschiedenen Bereiche wählen, auf die
+        Mitglieder dieser Gruppe Zugriff haben sollen.</p><p>Benutzergruppen sind unabhängig von Datenbanken, da sie in der
+        Authentifizierungsdatenbank gespeichert werden. Sie gelten für alle
+        Datenbanken, die in dieser Installation verwaltet werden.</p></div><div class="sect2" title="2.8.4. Benutzer anlegen"><div class="titlepage"><div><div><h3 class="title"><a name="Benutzer-anlegen"></a>2.8.4. Benutzer anlegen</h3></div></div></div><p>Beim Anlegen von Benutzern werden für viele Parameter
+        Standardeinstellungen vorgenommen, die den Gepflogenheiten des
+        deutschen Raumes entsprechen.</p><p>Zwingend anzugeben sind der Loginname sowie die komplette
+        Datenbankkonfiguration. Wenn die Passwortauthentifizierung über die
+        Datenbank eingestellt ist, so kann hier auch das Benutzerpasswort
+        gesetzt bzw. geändert werden. Ist hingegen die LDAP-Authentifizierung
+        aktiv, so ist das Passwort-Feld deaktiviert.</p><p>In der Datenbankkonfiguration müssen die Zugriffsdaten einer der
+        eben angelegten Datenbanken eingetragen werden.</p></div><div class="sect2" title="2.8.5. Gruppenmitgliedschaften verwalten"><div class="titlepage"><div><div><h3 class="title"><a name="Gruppenmitgliedschaften-verwalten"></a>2.8.5. Gruppenmitgliedschaften verwalten</h3></div></div></div><p>Nach dem Anlegen von Benutzern und Gruppen müssen Benutzer den
+        Gruppen zugewiesen werden. Dazu gibt es zwei Möglichkeiten:</p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p>In der Gruppenverwaltung wählt man eine Gruppe aus. Im
+            folgenden Dialog kann man dann einzeln die Benutzer der Gruppe
+            hinzufügen.</p></li><li class="listitem"><p>In der Gruppenverwaltung wählt man das Tool zur Verwaltung
+            der Gruppenmitgliedschaft. Hier wird eine Matrix angezeigt, die
+            alle im System angelegten Gruppen und Benutzer enthält. Durch
+            Setzen der Häkchen wird der Benutzer in der ausgewählten Zeile der
+            Gruppe in der ausgewählten Spalte hinzugefügt.</p></li></ol></div></div><div class="sect2" title="2.8.6. Migration alter Installationen"><div class="titlepage"><div><div><h3 class="title"><a name="Migration-alter-Installationen"></a>2.8.6. Migration alter Installationen</h3></div></div></div><p>Wenn Lx-Office 2.6.2 über eine ältere Version installiert wird,
+        in der die Benutzerdaten noch im Dateisystem im Verzeichnis
+        <code class="literal">users</code> verwaltet wurden, so bietet Lx-Office die
+        Möglichkeit, diese Benutzerdaten automatisch in die
+        Authentifizierungsdatenbank zu übernehmen. Dies geschieht, wenn man
+        sich nach dem Update der Installation das erste Mal im
+        Administrationsbereich anmeldet. Findet Lx-Office die Datei
+        <code class="literal">users/members</code>, so wird der Migrationsprozess
+        gestartet.</p><p>Der Migrationsprozess ist nahezu vollautomatisch. Alle
+        Benutzerdaten können übernommen werden. Nach den Benutzerdaten bietet
+        Lx-Office noch die Möglichkeit an, dass automatisch eine
+        Benutzergruppe angelegt wird. Dieser Gruppe wird Zugriff auf alle
+        Funktionen von Lx-Office gewährt. Alle migrierten Benutzern werden
+        Mitglied in dieser Gruppe. Damit wird das Verhalten von Lx-Office bis
+        Version 2.4.3 inklusive wiederhergestellt, und die Benutzer können
+        sich sofort wieder anmelden und mit dem System arbeiten.</p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch02s07.html">Zurück</a>&nbsp;</td><td width="20%" align="center"><a accesskey="u" href="ch02.html">Nach oben</a></td><td width="40%" align="right">&nbsp;<a accesskey="n" href="ch02s09.html">Weiter</a></td></tr><tr><td width="40%" align="left" valign="top">2.7. Benutzerauthentifizierung und Administratorpasswort&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;2.9. Drucken mit Lx-Office</td></tr></table></div></body></html>
\ No newline at end of file
diff --git a/doc/html/ch02s09.html b/doc/html/ch02s09.html
new file mode 100644 (file)
index 0000000..0328fdf
--- /dev/null
@@ -0,0 +1,27 @@
+<html><head>
+      <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+   <title>2.9. Drucken mit Lx-Office</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="Lx-Office: Installation, Konfiguration, Entwicklung"><link rel="up" href="ch02.html" title="Kapitel 2. Installation und Grundkonfiguration"><link rel="prev" href="ch02s08.html" title="2.8. Benutzer- und Gruppenverwaltung"><link rel="next" href="ch02s10.html" title="2.10. OpenDocument-Vorlagen"></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.9. Drucken mit Lx-Office</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch02s08.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="ch02s10.html">Weiter</a></td></tr></table><hr></div><div class="sect1" title="2.9. Drucken mit Lx-Office"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="Drucken-mit-Lx-Office"></a>2.9. Drucken mit Lx-Office</h2></div></div></div><p>Das Drucksystem von Lx-Office benutzt von Haus aus LaTeX Vorlagen.
+      Um drucken zu können, braucht der Server ein geeignetes LaTeX System. Am
+      einfachsten ist dazu eine <code class="literal">texlive</code> Installation. Unter
+      Debianoiden Betriebssystemen sind das die Pakete:</p><p>
+            <code class="literal">texlive-latex-base texlive-latex-extra
+      texlive-fonts-recommended</code>
+         </p><p>Diese hinteren beiden enthalten Bibliotheken und Schriftarten die
+      von den Standardvorlagen verwendet werden.</p><p>TODO: rpm Pakete.</p><p>In den allermeisten Installationen sollte drucken jetzt schon
+      funktionieren. Sollte ein Fehler auftreten wirft TeX sehr lange
+      Fehlerbeschreibungen, der eigentliche Fehler ist immer die erste Zeite
+      die mit einem Ausrufezeichen anfängt. Häufig auftretende Fehler sind zum
+      Beispiel:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>! LaTeX Error: File `eurosym.sty' not found. Die entsprechende
+          LaTeX-Bibliothek wurde nicht gefunden. Das tritt vor allem bei
+          Vorlagen aus der Community auf. Installieren Sie die entsprechenden
+          Pakete.</p></li><li class="listitem"><p>! Package inputenc Error: Unicode char \u8:桜 not set up for
+          use with LaTeX. Dieser Fehler tritt auf, wenn sie versuchen mit
+          einer Standardinstallation exotische utf8 Zeichen zu drucken.
+          TeXLive unterstützt von Haus nur romanische Schriften und muss mit
+          diversen Tricks dazu gebracht werden andere Zeichen zu akzeptieren.
+          Adere TeX Systeme wie XeTeX schaffen hier Abhilfe.</p></li></ul></div><p>Wird garkein Fehler angezeigt sondern nur der Name des Templates,
+      heißt das normalerweise, dass das LaTeX Binary nicht gefunden wurde.
+      Prüfen Sie den Namen in der Konfiguration (Standard:
+      <code class="literal">pdflatex</code>), und stellen Sie sicher, dass pdflatex
+      (oder das von Ihnen verwendete System) vom Webserver ausgeführt werden
+      darf.</p></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch02s08.html">Zurück</a>&nbsp;</td><td width="20%" align="center"><a accesskey="u" href="ch02.html">Nach oben</a></td><td width="40%" align="right">&nbsp;<a accesskey="n" href="ch02s10.html">Weiter</a></td></tr><tr><td width="40%" align="left" valign="top">2.8. Benutzer- und Gruppenverwaltung&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;2.10. OpenDocument-Vorlagen</td></tr></table></div></body></html>
\ No newline at end of file
diff --git a/doc/html/ch02s10.html b/doc/html/ch02s10.html
new file mode 100644 (file)
index 0000000..83935f5
--- /dev/null
@@ -0,0 +1,56 @@
+<html><head>
+      <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+   <title>2.10. OpenDocument-Vorlagen</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="Lx-Office: Installation, Konfiguration, Entwicklung"><link rel="up" href="ch02.html" title="Kapitel 2. Installation und Grundkonfiguration"><link rel="prev" href="ch02s09.html" title="2.9. Drucken mit Lx-Office"><link rel="next" href="ch02s11.html" title="2.11. Konfiguration zur Einnahmenüberschussrechnung/Bilanzierung: EUR"></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.10. OpenDocument-Vorlagen</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch02s09.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="ch02s11.html">Weiter</a></td></tr></table><hr></div><div class="sect1" title="2.10. OpenDocument-Vorlagen"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="OpenDocument-Vorlagen"></a>2.10. OpenDocument-Vorlagen</h2></div></div></div><p>Lx-Office unterstützt die Verwendung von Vorlagen im
+      OpenDocument-Format, wie es OpenOffice.org ab Version 2 erzeugt.
+      Lx-Office kann dabei sowohl neue OpenDocument-Dokumente als auch aus
+      diesen direkt PDF-Dateien erzeugen. Um die Unterstützung von
+      OpenDocument-Vorlagen zu aktivieren muss in der Datei
+      <code class="filename">config/lx_office.conf</code> die Variable
+      <code class="literal">opendocument</code> im Abschnitt
+      <code class="literal">print_templates</code> auf &#8216;<code class="literal">1</code>&#8217; stehen.
+      Dieses ist die Standardeinstellung.</p><p>Weiterhin muss in der Datei
+      <code class="filename">config/lx_office.conf</code> die Variable
+      <code class="literal">dbcharset</code> im Abschnitt <code class="literal">system</code> auf
+      die Zeichenkodierung gesetzt werden, die auch bei der Speicherung der
+      Daten in der Datenbank verwendet wird. Diese ist in den meisten Fällen
+      "UTF-8".</p><p>Während die Erzeugung von reinen OpenDocument-Dateien keinerlei
+      weitere Software benötigt, wird zur Umwandlung dieser Dateien in PDF
+      OpenOffice.org benötigt. Soll dieses Feature genutzt werden, so muss
+      neben OpenOffice.org ab Version 2 auch der &#8220;X virtual frame buffer&#8221;
+      (xvfb) installiert werden. Bei Debian ist er im Paket &#8220;xvfb&#8221; enthalten.
+      Andere Distributionen enthalten ihn in anderen Paketen.</p><p>Nach der Installation müssen in der Datei
+      <code class="filename">config/lx_config.conf</code> zwei weitere Variablen
+      angepasst werden: <code class="literal">openofficeorg_writer</code> muss den
+      vollständigen Pfad zur OpenOffice.org Writer-Anwendung enthalten.
+      <code class="literal">xvfb</code> muss den Pfad zum &#8220;X virtual frame buffer&#8221;
+      enthalten. Beide stehen im Abschnitt
+      <code class="literal">applications</code>.</p><p>Zusätzlich gibt es zwei verschiedene Arten, wie Lx-Office mit
+      OpenOffice kommuniziert. Die erste Variante, die benutzt wird, wenn die
+      Variable <code class="literal">$openofficeorg_daemon</code> gesetzt ist, startet
+      ein OpenOffice, das auch nach der Umwandlung des Dokumentes gestartet
+      bleibt. Bei weiteren Umwandlungen wird dann diese laufende Instanz
+      benutzt. Der Vorteil ist, dass die Zeit zur Umwandlung deutlich
+      reduziert wird, weil nicht für jedes Dokument ein OpenOffice gestartet
+      werden muss. Der Nachteil ist, dass diese Methode Python und die
+      Python-UNO-Bindings benötigt, die Bestandteil von OpenOffice 2
+      sind.</p><p>Ist <code class="literal">$openofficeorg_daemon</code> nicht gesetzt, so
+      wird für jedes Dokument OpenOffice neu gestartet und die Konvertierung
+      mit Hilfe eines Makros durchgeführt. Dieses Makro muss in der
+      Dokumentenvorlage enthalten sein und
+      &#8220;Standard.Conversion.ConvertSelfToPDF()&#8221; heißen. Die Beispielvorlage
+      &#8216;<code class="literal">templates/mastertemplates/German/invoice.odt</code>&#8217;
+      enthält ein solches Makro, das in jeder anderen Dokumentenvorlage
+      ebenfalls enthalten sein muss.</p><p>Als letztes muss herausgefunden werden, welchen Namen
+      OpenOffice.org Writer dem Verzeichnis mit den Benutzereinstellungen
+      gibt. Unter Debian ist dies momentan
+      <code class="literal">~/.openoffice.org2</code>. Sollte der Name bei Ihrer
+      OpenOffice.org-Installation anders sein, so muss das Verzeichnis
+      <code class="literal">users/.openoffice.org2</code> entsprechend umbenannt werden.
+      Ist der Name z.B. einfach nur <code class="literal">.openoffice</code>, so wäre
+      folgender Befehl auszuführen:</p><p>
+            <code class="literal">mv users/.openoffice.org2
+      users/.openoffice</code>
+         </p><p>Dieses Verzeichnis, wie auch das komplette
+      <code class="literal">users</code>-Verzeichnis, muss vom Webserver beschreibbar
+      sein. Dieses wurde bereits erledigt (siehe <a class="xref" href="ch02s02.html" title="2.2. Manuelle Installation des Programmpaketes">Manuelle Installation des Programmpaketes</a>), kann aber erneut
+      überprüft werden, wenn die Konvertierung nach PDF fehlschlägt.</p></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch02s09.html">Zurück</a>&nbsp;</td><td width="20%" align="center"><a accesskey="u" href="ch02.html">Nach oben</a></td><td width="40%" align="right">&nbsp;<a accesskey="n" href="ch02s11.html">Weiter</a></td></tr><tr><td width="40%" align="left" valign="top">2.9. Drucken mit Lx-Office&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;2.11. Konfiguration zur Einnahmenüberschussrechnung/Bilanzierung: EUR</td></tr></table></div></body></html>
\ No newline at end of file
diff --git a/doc/html/ch02s11.html b/doc/html/ch02s11.html
new file mode 100644 (file)
index 0000000..3856d30
--- /dev/null
@@ -0,0 +1,59 @@
+<html><head>
+      <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+   <title>2.11. Konfiguration zur Einnahmenüberschussrechnung/Bilanzierung: EUR</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="Lx-Office: Installation, Konfiguration, Entwicklung"><link rel="up" href="ch02.html" title="Kapitel 2. Installation und Grundkonfiguration"><link rel="prev" href="ch02s10.html" title="2.10. OpenDocument-Vorlagen"><link rel="next" href="ch02s12.html" title="2.12. Lx-Office ERP verwenden"></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.11. Konfiguration zur Einnahmenüberschussrechnung/Bilanzierung: EUR</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch02s10.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="ch02s12.html">Weiter</a></td></tr></table><hr></div><div class="sect1" title="2.11. Konfiguration zur Einnahmenüberschussrechnung/Bilanzierung: EUR"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="config.eur"></a>2.11. Konfiguration zur Einnahmenüberschussrechnung/Bilanzierung: EUR</h2></div></div></div><div class="sect2" title="2.11.1. Einführung"><div class="titlepage"><div><div><h3 class="title"><a name="config.eur.introduction"></a>2.11.1. Einführung</h3></div></div></div><p>
+        Lx-Office besaß bis inklusive Version 2.6.3 einen Konfigurationsparameter namens <code class="varname">eur</code>, der sich in der
+        Konfigurationsdatei <code class="filename">config/lx_office.conf</code> befindet. Somit galt er für alle Mandanten, die in dieser
+        Installation benutzt wurden.
+       </p><p>
+        Mit der nachfolgenden Version wurde der Parameter zum Einen in die Mandantendatenbank verschoben und dabei auch gleich in drei
+        Einzelparameter aufgeteilt, mit denen sich das Verhalten genauer steuern lässt.
+       </p></div><div class="sect2" title="2.11.2. Konfigurationsparameter"><div class="titlepage"><div><div><h3 class="title"><a name="config.eur.parameters"></a>2.11.2. Konfigurationsparameter</h3></div></div></div><p>
+        Es gibt drei Parameter, die die Gewinnermittlungsart, Versteuerungsart und die Warenbuchungsmethode regeln:
+       </p><div class="variablelist"><dl><dt><span class="term">
+                     <code class="varname">profit_determination</code>
+                  </span></dt><dd><p>
+           Dieser Parameter legt die Berechnungsmethode für die Gewinnermittlung fest. Er enthält entweder <code class="literal">balance</code> für
+           Betriebsvermögensvergleich/Bilanzierung oder <code class="literal">income</code> für die Einnahmen-Überschuss-Rechnung.
+          </p></dd><dt><span class="term">
+                     <code class="varname">accounting_method</code>
+                  </span></dt><dd><p>
+           Dieser Parameter steuert die Buchungs- und Berechnungsmethoden für die Versteuerungsart. Er enthält entweder
+           <code class="literal">accrual</code> für die Soll-Versteuerung oder <code class="literal">cash</code> für die Ist-Versteuerung.
+          </p></dd><dt><span class="term">
+                     <code class="varname">inventory_system</code>
+                  </span></dt><dd><p>
+           Dieser Parameter legt die Warenbuchungsmethode fest. Er enthält entweder <code class="literal">perpetual</code> für die Bestandsmethode
+           oder <code class="literal">periodic</code> für die Aufwandsmethode.
+          </p></dd></dl></div><p>
+        Zum Vergleich der Funktionalität bis und nach 2.6.3: <code class="varname">eur</code> = 1 bedeutete Einnahmen-Überschuss-Rechnung,
+        Ist-Versteuerung und Aufwandsmethode. <code class="varname">eur</code> = 0 bedeutete hingegen Bilanzierung, Soll-Versteuerung und
+        Bestandsmethode.
+       </p><p>
+        Die Konfiguration "<code class="varname">eur</code>" unter <code class="varname">[system]</code> in der <a class="link" href="ch02s03.html" title="2.3. Lx-Office-Konfigurationsdatei">Konfigurationsdatei</a> 
+               <code class="filename">config/lx_office.conf</code> wird nun nicht mehr benötigt und
+        kann entfernt werden. Dies muss manuell geschehen.
+       </p></div><div class="sect2" title="2.11.3. Festlegen der Parameter"><div class="titlepage"><div><div><h3 class="title"><a name="config.eur.setting-parameters"></a>2.11.3. Festlegen der Parameter</h3></div></div></div><p>
+        Beim Anlegen eines neuen Mandanten bzw. einer neuen Datenbank in der Admininstration können diese Optionen nun unabhängig
+        voneinander eingestellt werden.
+       </p><p>
+        Beim Upgrade bestehender Mandanten wird eur ausgelesen und die Variablen werden so gesetzt, daß sich an der Funktionalität nichts
+        ändert.
+       </p><p>
+        Die aktuelle Konfiguration wird unter Nummernkreise und Standardkonten unter dem neuen Punkt "Einstellungen" angezeigt (read-only).
+        Eine spätere Änderung ist für einen bestehenden Mandanten nicht mehr möglich. Dies war auch vorher nicht möglich, bzw. vorhandene
+        Daten wurden so belassen und haben damit die Ergebnisse verfälscht.
+       </p></div><div class="sect2" title="2.11.4. Bemerkungen zu Bestandsmethode"><div class="titlepage"><div><div><h3 class="title"><a name="config.eur.inventory-system-perpetual"></a>2.11.4. Bemerkungen zu Bestandsmethode</h3></div></div></div><p>
+        Die Bestandsmethode ist eigentlich eine sehr elegante Methode, funktioniert in Lx-Office aber nur unter bestimmten Bedingungen:
+        Voraussetzung ist, daß auch immer alle Einkaufsrechnungen gepflegt werden, und man beim Jahreswechsel nicht mit einer leeren
+        Datenbank anfängt, da bei jedem Verkauf anhand der gesamten Rechnungshistorie der Einkaufswert der Ware nach dem FIFO-Prinzip aus
+        den Einkaufsrechnungen berechnet wird.
+       </p><p>
+        Die Bestandsmethode kann vom Prinzip her also nur funktioneren, wenn man mit den Buchungen bei Null anfängt, und man kann auch nicht
+        im laufenden Betrieb von der Aufwandsmethode zur Bestandsmethode wechseln.
+       </p></div><div class="sect2" title="2.11.5. Bekannte Probleme"><div class="titlepage"><div><div><h3 class="title"><a name="config.eur.knonw-issues"></a>2.11.5. Bekannte Probleme</h3></div></div></div><p>
+        Bei bestimmten Berichten kann man derzeit noch inviduell einstellen, ob man nach Ist- oder Sollversteuerung auswertet, und es werden
+        im Code Variablen wie $accrual oder $cash gesetzt. Diese Codestellen wurden noch nicht angepasst, sondern nur die, wo bisher
+        die Konfigurationsvariable <code class="varname">$::lx_office_conf{system}-&gt;{eur}</code> ausgewertet wurde.
+       </p><p>
+        Es fehlen Hilfetext beim Neuanlegen eines Mandanten, was die Optionen bewirken, z.B. mit zwei Standardfällen.
+       </p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch02s10.html">Zurück</a>&nbsp;</td><td width="20%" align="center"><a accesskey="u" href="ch02.html">Nach oben</a></td><td width="40%" align="right">&nbsp;<a accesskey="n" href="ch02s12.html">Weiter</a></td></tr><tr><td width="40%" align="left" valign="top">2.10. OpenDocument-Vorlagen&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;2.12. Lx-Office ERP verwenden</td></tr></table></div></body></html>
\ No newline at end of file
diff --git a/doc/html/ch02s12.html b/doc/html/ch02s12.html
new file mode 100644 (file)
index 0000000..a2cd592
--- /dev/null
@@ -0,0 +1,8 @@
+<html><head>
+      <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+   <title>2.12. Lx-Office ERP verwenden</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="Lx-Office: Installation, Konfiguration, Entwicklung"><link rel="up" href="ch02.html" title="Kapitel 2. Installation und Grundkonfiguration"><link rel="prev" href="ch02s11.html" title="2.11. Konfiguration zur Einnahmenüberschussrechnung/Bilanzierung: EUR"><link rel="next" href="ch03.html" title="Kapitel 3. Features und Funktionen"></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.12. Lx-Office ERP verwenden</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch02s11.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="ch03.html">Weiter</a></td></tr></table><hr></div><div class="sect1" title="2.12. Lx-Office ERP verwenden"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="Lx-Office-ERP-verwenden"></a>2.12. Lx-Office ERP verwenden</h2></div></div></div><p>Nach erfolgreicher Installation ist der Loginbildschirm unter
+      folgender URL erreichbar:</p><p>
+            <a class="ulink" href="http://localhost/lx-office-erp/login.pl" target="_top">http://localhost/lx-office-erp/login.pl</a>
+         </p><p>Die Administrationsseite erreichen Sie unter:</p><p>
+            <a class="ulink" href="http://localhost/lx-office-erp/admin.pl" target="_top">http://localhost/lx-office-erp/admin.pl</a>
+         </p></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch02s11.html">Zurück</a>&nbsp;</td><td width="20%" align="center"><a accesskey="u" href="ch02.html">Nach oben</a></td><td width="40%" align="right">&nbsp;<a accesskey="n" href="ch03.html">Weiter</a></td></tr><tr><td width="40%" align="left" valign="top">2.11. Konfiguration zur Einnahmenüberschussrechnung/Bilanzierung: EUR&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 3. Features und Funktionen</td></tr></table></div></body></html>
\ No newline at end of file
diff --git a/doc/html/ch03.html b/doc/html/ch03.html
new file mode 100644 (file)
index 0000000..6cf2cef
--- /dev/null
@@ -0,0 +1,58 @@
+<html><head>
+      <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+   <title>Kapitel 3. Features und Funktionen</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="Lx-Office: Installation, Konfiguration, Entwicklung"><link rel="up" href="index.html" title="Lx-Office: Installation, Konfiguration, Entwicklung"><link rel="prev" href="ch02s12.html" title="2.12. Lx-Office ERP verwenden"><link rel="next" href="ch03s02.html" title="3.2. Dokumentenvorlagen und verfügbare Variablen"></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 3. Features und Funktionen</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch02s12.html">Zurück</a>&nbsp;</td><th width="60%" align="center">&nbsp;</th><td width="20%" align="right">&nbsp;<a accesskey="n" href="ch03s02.html">Weiter</a></td></tr></table><hr></div><div class="chapter" title="Kapitel 3. Features und Funktionen"><div class="titlepage"><div><div><h2 class="title"><a name="features"></a>Kapitel 3. Features und Funktionen</h2></div></div></div><div class="sect1" title="3.1. Wiederkehrende Rechnungen"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="features.periodic-invoices"></a>3.1. Wiederkehrende Rechnungen</h2></div></div></div><div class="sect2" title="3.1.1. Einführung"><div class="titlepage"><div><div><h3 class="title"><a name="features.periodic-invoices.introduction"></a>3.1.1. Einführung</h3></div></div></div><p>
+       Wiederkehrende Rechnungen werden als normale Aufträge definiert und konfiguriert, mit allen dazugehörigen Kunden- und
+       Artikelangaben. Die konfigurierten Aufträge werden später automatisch in Rechnungen umgewandelt, so als ob man den Workflow benutzen
+       würde, und auch die Auftragsnummer wird übernommen, sodass alle wiederkehrenden Rechnungen, die aus einem Auftrag erstellt wurden,
+       später leicht wiederzufinden sind.
+      </p></div><div class="sect2" title="3.1.2. Konfiguration"><div class="titlepage"><div><div><h3 class="title"><a name="features.periodic-invoices.configuration"></a>3.1.2. Konfiguration</h3></div></div></div><p>
+       Um einen Auftrag für wiederkehrende Rechnung zu konfigurieren, findet sich beim Bearbeiten des Auftrags ein neuer Knopf
+       "Konfigurieren", der ein neues Fenster öffnet, in dem man die nötigen Parameter einstellen kann.  Hinter dem Knopf wird außerdem noch
+       angezeigt, ob der Auftrag als wiederkehrende Rechnung konfiguriert ist oder nicht.
+      </p><p>
+       Folgende Parameter kann man konfigurieren:
+      </p><div class="variablelist"><dl><dt><span class="term">Status</span></dt><dd><p>
+          Bei aktiven Rechnungen wird automatisch eine Rechnung erstellt, wenn die Periodizität erreicht ist (z.B. Anfang eines neuen
+          Monats).
+         </p><p>
+          Ist ein Auftrag nicht aktiv, so werden für ihn auch keine wiederkehrenden Rechnungen erzeugt. Stellt man nach längerer
+          nicht-aktiver Zeit einen Auftrag wieder auf aktiv, wird beim nächsten Periodenwechsel für alle Perioden, seit der letzten aktiven
+          Periode, jeweils eine Rechnung erstellt. Möchte man dies verhindern, muss man vorher das Startdatum neu setzen.
+         </p><p>
+          Für gekündigte Aufträge werden nie mehr Rechnungen erstellt. Man kann sich diese Aufträge aber gesondert in den Berichten anzeigen
+          lassen.
+         </p></dd><dt><span class="term">Periodizität</span></dt><dd><p>
+          Ob monatlich, quartalsweise oder jährlich auf neue Rechnungen überprüft werden soll. Für jede Periode seit dem Startdatum wird
+          überprüft, ob für die Periode (beginnend immer mit dem ersten Tag der Periode) schon eine Rechnung erstellt wurde. Unter Umständen
+          können bei einem Startdatum in der Vergangenheit gleich mehrere Rechnungen erstellt werden.
+         </p></dd><dt><span class="term">Buchen auf</span></dt><dd><p>
+          Das Forderungskonto, in der Regel "Forderungen aus Lieferungen und Leistungen". Das Gegenkonto ergibt sich aus den Buchungsgruppen
+          der betreffenden Waren.
+         </p></dd><dt><span class="term">Startdatum</span></dt><dd><p>
+          ab welchem Datum auf Rechnungserstellung geprüft werden soll
+         </p></dd><dt><span class="term">Enddatum</span></dt><dd><p>
+          ab wann keine Rechnungen mehr erstellt werden sollen
+         </p></dd><dt><span class="term">Automatische Verlängerung um x Monate</span></dt><dd><p>
+          Sollen die wiederkehrenden Rechnungen bei Erreichen des eingetragenen Enddatums weiterhin erstellt werden, so kann man hier die
+          Anzahl der Monate eingeben, um die das Enddatum automatisch nach hinten geschoben wird.
+         </p></dd><dt><span class="term">Drucken</span></dt><dd><p>
+          Sind Drucker konfiguriert, so kann man sich die erstellten Rechnungen auch gleich ausdrucken lassen.
+         </p></dd></dl></div><p>
+       Nach Erstellung der Rechnungen kann eine E-Mail mit Informationen zu den erstellten Rechnungen verschickt werden. Konfiguriert wird
+       dies in der <a class="link" href="ch02s03.html#config.config-file.sections-parameters" title="2.3.2. Abschnitte und Parameter">Konfigurationsdatei</a>
+       
+               <code class="filename">config/lx_office.conf</code> im Abschnitt <code class="varname">[periodic_invoices]</code>.
+      </p></div><div class="sect2" title="3.1.3. Auflisten"><div class="titlepage"><div><div><h3 class="title"><a name="features.periodic-invoices.reports"></a>3.1.3. Auflisten</h3></div></div></div><p>
+       Unter Verkauf-&gt;Berichte-&gt;Aufträge finden sich zwei neue Checkboxen, "Wiederkehrende Rechnungen aktiv" und
+       "Wiederkehrende Rechnungen inaktiv", mit denen man sich einen Überglick über die wiederkehrenden Rechnungen verschaffen
+       kann.
+      </p></div><div class="sect2" title="3.1.4. Erzeugung der eigentlichen Rechnungen"><div class="titlepage"><div><div><h3 class="title"><a name="features.periodic-invoices.task-server"></a>3.1.4. Erzeugung der eigentlichen Rechnungen</h3></div></div></div><p>
+       Die zeitliche und periodische Überprüfung, ob eine wiederkehrende Rechnung automatisch erstellt werden soll, geschieht durch den
+       <a class="link" href="ch02s06.html" title="2.6. Der Task-Server">Taskserver</a>, einen externen Dienst, der automatisch beim Start des Servers gestartet
+       werden sollte.
+      </p></div><div class="sect2" title="3.1.5. Erste Rechnung für aktuellen Monat erstellen"><div class="titlepage"><div><div><h3 class="title"><a name="features.periodic-invoices.create-for-current-month"></a>3.1.5. Erste Rechnung für aktuellen Monat erstellen</h3></div></div></div><p>
+       Will man im laufenden Monat eine monatlich wiederkehrende Rechnung inkl. des laufenden Monats starten, stellt man das Startdatum auf
+       den Monatsanfang und wartet ein paar Minuten, bis der Taskserver den neu konfigurieren Auftrag erkennt und daraus eine Rechnung
+       generiert hat. Alternativ setzt man das Startdatum auf den Monatsersten des Folgemonats und erstellt die erste Rechnung direkt
+       manuell über den Workflow.
+      </p></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch02s12.html">Zurück</a>&nbsp;</td><td width="20%" align="center">&nbsp;</td><td width="40%" align="right">&nbsp;<a accesskey="n" href="ch03s02.html">Weiter</a></td></tr><tr><td width="40%" align="left" valign="top">2.12. Lx-Office ERP verwenden&nbsp;</td><td width="20%" align="center"><a accesskey="h" href="index.html">Zum Anfang</a></td><td width="40%" align="right" valign="top">&nbsp;3.2. Dokumentenvorlagen und verfügbare Variablen</td></tr></table></div></body></html>
\ No newline at end of file
diff --git a/doc/html/ch03s02.html b/doc/html/ch03s02.html
new file mode 100644 (file)
index 0000000..8c93765
--- /dev/null
@@ -0,0 +1,715 @@
+<html><head>
+      <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+   <title>3.2. Dokumentenvorlagen und verfügbare Variablen</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="Lx-Office: Installation, Konfiguration, Entwicklung"><link rel="up" href="ch03.html" title="Kapitel 3. Features und Funktionen"><link rel="prev" href="ch03.html" title="Kapitel 3. Features und Funktionen"><link rel="next" href="ch03s03.html" title="3.3. Excel-Vorlagen"></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.2. Dokumentenvorlagen und verfügbare Variablen</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch03.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="ch03s03.html">Weiter</a></td></tr></table><hr></div><div class="sect1" title="3.2. Dokumentenvorlagen und verfügbare Variablen"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="dokumentenvorlagen-und-variablen"></a>3.2. Dokumentenvorlagen und verfügbare Variablen</h2></div></div></div><div class="sect2" title="3.2.1. Einführung"><div class="titlepage"><div><div><h3 class="title"><a name="dokumentenvorlagen-und-variablen.einf%C3%BChrung"></a>3.2.1. Einführung</h3></div></div></div><p>Dies ist eine Auflistung der Standard-Dokumentenvorlagen und
+        aller zur Bearbeitung verfügbaren Variablen. Eine Variable wird in
+        einer Vorlage durch ihren Inhalt ersetzt, wenn sie in der Form
+        <code class="function">&lt;%variablenname%&gt;</code> verwendet wird. Für
+        LaTeX- und HTML-Vorlagen kann man die Form dieser Tags auch verändern
+        (siehe <a class="xref" href="ch03s02.html#dokumentenvorlagen-und-variablen.tag-style" title="3.2.4. Anfang und Ende der Tags verändern">Anfang und Ende der Tags verändern</a>).</p><p>Früher wurde hier nur über LaTeX gesprochen. Inzwischen
+        unterstützt Lx-Office aber auch OpenDocument-Vorlagen. Sofern es nicht
+        ausdrücklich eingeschränkt wird, gilt das im Folgenden gesagte für
+        alle Vorlagenarten.</p><p>Insgesamt sind technisch gesehen eine ganze Menge mehr Variablen
+        verfügbar als hier aufgelistet werden. Die meisten davon können
+        allerdings innerhalb einer solchen Vorlage nicht sinnvoll verwendet
+        werden. Wenn eine Auflistung dieser Variablen gewollt ist, so kann
+        diese wie folgt erhalten werden:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>
+                     <code class="filename">SL/Form.pm</code> öffnen und am Anfang die
+            Zeile "<span class="command"><strong>use Data::Dumper;</strong></span>" einfügen.</p></li><li class="listitem"><p>In <code class="filename">Form.pm</code> die Funktion
+            <code class="function">parse_template</code> suchen und hier die Zeile
+            <span class="command"><strong>print(STDERR Dumper($self));</strong></span> einfügen.</p></li><li class="listitem"><p>Einmal per Browser die gewünschte Vorlage "benutzen", z.B.
+            ein PDF für eine Rechnung erzeugen.</p></li><li class="listitem"><p>Im <code class="filename">error.log</code> Apache steht die Ausgabe
+            der Variablen <code class="varname">$self</code> in der Form <code class="varname">'key'
+            =&gt; 'value',</code>. Alle <code class="varname">key</code>s sind
+            verfügbar.</p></li></ul></div></div><div class="sect2" title="3.2.2. Variablen ausgeben"><div class="titlepage"><div><div><h3 class="title"><a name="dokumentenvorlagen-und-variablen.variablen-ausgeben"></a>3.2.2. Variablen ausgeben</h3></div></div></div><p>Um eine Variable auszugeben, müssen sie einfach nur zwischen die
+        Tags geschrieben werden, also z.B.
+        <code class="varname">&lt;%variablenname%&gt;</code>.</p><p>Optional kann man auch mit Leerzeichen getrennte Flags angeben,
+        die man aber nur selten brauchen wird. Die Syntax sieht also so aus:
+        <code class="varname">&lt;%variablenname FLAG1 FLAG2%&gt;</code>. Momentan
+        werden die folgenden Flags unterstützt:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>
+                     <code class="option">NOFORMAT</code> gilt nur für Zahlenwerte und gibt
+            den Wert ohne Formatierung, also ohne Tausendertrennzeichen mit
+            mit einem Punkt als Dezimaltrennzeichen aus. Nützlich z.B., wenn
+            damit in der Vorlage z.B. von LaTeX gerechnet werden soll.</p></li><li class="listitem"><p>
+                     <code class="option">NOESCAPE</code> unterdrückt das Escapen von
+            Sonderzeichen für die Vorlagensprache. Wenn also in einer
+            Variablen bereits gültiger LaTeX-Code steht und dieser von LaTeX
+            auch ausgewertet und nicht wortwörtlich angezeigt werden soll, so
+            ist dieses Flag sinnvoll.</p></li></ul></div><p>Beispiel:</p><pre class="programlisting">&lt;%quototal NOFORMAT%&gt;</pre></div><div class="sect2" title="3.2.3. Verwendung in Druckbefehlen"><div class="titlepage"><div><div><h3 class="title"><a name="dokumentenvorlagen-und-variablen.verwendung-in-druckbefehlen"></a>3.2.3. Verwendung in Druckbefehlen</h3></div></div></div><p>In der Admininstration können Drucker definiert werden. Auch im
+        dort eingebbaren Druckbefehl können die hier aufgelisteten Variablen
+        und Kontrollstrukturen verwendet werden. Ihr Inhalt wird dabei nach
+        den Regeln der gängigen Shells formatiert, sodass Sonderzeichen wie
+        <code class="function">`...`</code> nicht zu unerwünschtem Verhalten
+        führen.</p><p>Dies erlaubt z.B. die Definition eines Faxes als Druckerbefehl,
+        für das die Telefonnummer eines Ansprechpartners als Teil der
+        Kommandozeile verwendet wird. Für ein fiktives Kommando könnte das
+        z.B. wie folgt aussehen:</p><pre class="programlisting">send_fax --number &lt;%if cp_phone2%&gt;&lt;%cp_phone2%&gt;&lt;%else%&gt;&lt;%cp_phone1%&gt;&lt;%end%&gt;</pre></div><div class="sect2" title="3.2.4. Anfang und Ende der Tags verändern"><div class="titlepage"><div><div><h3 class="title"><a name="dokumentenvorlagen-und-variablen.tag-style"></a>3.2.4. Anfang und Ende der Tags verändern</h3></div></div></div><p>Der Standardstil für Tags sieht vor, dass ein Tag mit dem
+        Kleinerzeichen und einem Prozentzeichen beginnt und mit dem
+        Prozentzeichen und dem Größerzeichen endet, beispielsweise
+        <code class="function">&lt;%customer%&gt;</code>. Da diese Form aber z.B. in
+        LaTeX zu Problemen führen kann, weil das Prozentzeichen dort
+        Kommentare einleitet, kann pro HTML- oder LaTeX-Dokumentenvorlage der
+        Stil umgestellt werden.</p><p>Dazu werden in die Datei Zeilen geschrieben, die mit dem für das
+        Format gültigen Kommentarzeichen anfangen, dann
+        <code class="function">config:</code> enthalten, die entsprechende Option
+        setzen und bei HTML-Dokumentenvorlagen mit dem Kommentarendzeichen
+        enden. Beispiel für LaTeX:</p><pre class="programlisting">% config: tag-style=($ $)</pre><p>Dies würde Lx-Office dazu veranlassen, Variablen zu ersetzen,
+        wenn sie wie folgt aussehen: <code class="function">($customer$)</code>. Das
+        äquivalente Beispiel für HTML-Dokumentenvorlagen sieht so aus:</p><pre class="programlisting">&lt;!-- config: tag-style=($ $) --&gt;</pre></div><div class="sect2" title="3.2.5. Zuordnung von den Dateinamen zu den Funktionen"><div class="titlepage"><div><div><h3 class="title"><a name="dokumentenvorlagen-und-variablen.zuordnung-dateinamen"></a>3.2.5. Zuordnung von den Dateinamen zu den Funktionen</h3></div></div></div><p>Diese folgende kurze Auflistung zeigt, welche Vorlage bei
+        welcher Funktion ausgelesen wird. Dabei ist die Dateiendung
+        "<code class="filename">.ext</code>" geeignet zu ersetzen:
+        "<code class="filename">.tex</code>" für LaTeX-Vorlagen und
+        "<code class="filename">.odt</code>" für OpenDocument-Vorlagen.</p><div class="variablelist"><dl><dt><span class="term">
+                     <code class="filename">bin_list.ext</code>
+                  </span></dt><dd><p>Lagerliste</p></dd><dt><span class="term">
+                     <code class="filename">check.ext</code>
+                  </span></dt><dd><p>?</p></dd><dt><span class="term">
+                     <code class="filename">invoice.ext</code>
+                  </span></dt><dd><p>Rechnung</p></dd><dt><span class="term">
+                     <code class="filename">packing_list.ext</code>
+                  </span></dt><dd><p>Packliste</p></dd><dt><span class="term">
+                     <code class="filename">pick_list.ext</code>
+                  </span></dt><dd><p>Sammelliste</p></dd><dt><span class="term">
+                     <code class="filename">purchase_delivery_order.ext</code>
+                  </span></dt><dd><p>Lieferschein (Einkauf)</p></dd><dt><span class="term">
+                     <code class="filename">purcharse_order.ext</code>
+                  </span></dt><dd><p>Bestellung an Lieferanten</p></dd><dt><span class="term">
+                     <code class="filename">request_quotation.ext</code>
+                  </span></dt><dd><p>Anfrage an Lieferanten</p></dd><dt><span class="term">
+                     <code class="filename">sales_delivery_order.ext</code>
+                  </span></dt><dd><p>Lieferschein (Verkauf)</p></dd><dt><span class="term">
+                     <code class="filename">sales_order.ext</code>
+                  </span></dt><dd><p>Bestellung</p></dd><dt><span class="term">
+                     <code class="filename">sales_quotation.ext</code>
+                  </span></dt><dd><p>Angebot an Kunden</p></dd><dt><span class="term">
+                     <code class="filename">zahlungserinnerung.ext</code>
+                  </span></dt><dd><p>Mahnung (Dateiname im Programm konfigurierbar)</p></dd><dt><span class="term">
+                     <code class="filename">zahlungserinnerung_invoice.ext</code>
+                  </span></dt><dd><p>Rechnung über Mahngebühren (Dateiname im Programm
+              konfigurierbar)</p></dd></dl></div></div><div class="sect2" title="3.2.6. Sprache, Drucker und E-Mail"><div class="titlepage"><div><div><h3 class="title"><a name="dokumentenvorlagen-und-variablen.dateinamen-erweitert"></a>3.2.6. Sprache, Drucker und E-Mail</h3></div></div></div><p>Angeforderte Sprache und Druckerkürzel in den Dateinamen mit
+        eingearbeitet. So wird aus der Vorlage
+        <code class="filename">sales_order.ext</code> bei Sprache
+        <code class="function">de</code> und Druckerkürzel <code class="function">lpr2</code>
+        der Vorlagenname <code class="filename">sales_order_de_lpr2.ext</code>.
+        Zusätzlich können für E-Mails andere Vorlagen erstellt werden, diese
+        bekommen dann noch das Kürzel <code class="filename">_email</code>, der
+        vollständige Vorlagenname wäre dann
+        <code class="filename">sales_order_email_de_lpr2.ext</code>. In allen Fällen
+        kann eine Standarddatei <code class="filename">default.ext</code> hinterlegt
+        werden. Diese wird verwendet, wenn keine der anderen Varianten
+        gefunden wird.</p><p>Die vollständige Suchreihenfolge für einen Verkaufsauftrag mit
+        der Sprache "de" und dem Drucker "lpr2", der per E-Mail im Format PDF
+        verschickt wird, ist:</p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p>
+                     <code class="filename">sales_order_email_de_lpr2.tex</code>
+                  </p></li><li class="listitem"><p>
+                     <code class="filename">sales_order_de_lpr2.tex</code>
+                  </p></li><li class="listitem"><p>
+                     <code class="filename">sales_order.tex</code>
+                  </p></li><li class="listitem"><p>
+                     <code class="filename">default.tex</code>
+                  </p></li></ol></div><p>Die kurzen Varianten dieser Vorlagentitel müssen dann entweder
+        Standardwerte anzeigen, oder die angeforderten Werte selbst auswerten,
+        siehe dazu <a class="xref" href="ch03s02.html#dokumentenvorlagen-und-variablen.allgemeine-variablen.meta" title="3.2.7.1. Metainformationen zur angeforderten Vorlage">Metainformationen zur angeforderten Vorlage</a>.</p></div><div class="sect2" title="3.2.7. Allgemeine Variablen, die in allen Vorlagen vorhanden sind"><div class="titlepage"><div><div><h3 class="title"><a name="dokumentenvorlagen-und-variablen.allgemeine-variablen"></a>3.2.7. Allgemeine Variablen, die in allen Vorlagen vorhanden
+        sind</h3></div></div></div><div class="sect3" title="3.2.7.1. Metainformationen zur angeforderten Vorlage"><div class="titlepage"><div><div><h4 class="title"><a name="dokumentenvorlagen-und-variablen.allgemeine-variablen.meta"></a>3.2.7.1. Metainformationen zur angeforderten Vorlage</h4></div></div></div><p>Diese Variablen liefern Informationen darüber welche Variante
+          einer Vorlage der Benutzer angefragt hat. Sie sind nützlich für
+          Vorlagenautoren, die aus einer zentralen Layoutvorlage die einzelnen
+          Formulare einbinden möchten.</p><div class="variablelist"><dl><dt><span class="term">
+                        <code class="varname">template_meta.formname</code>
+                     </span></dt><dd><p>Basisname der Vorlage. Identisch mit der <a class="link" href="ch03s02.html#dokumentenvorlagen-und-variablen.zuordnung-dateinamen" title="3.2.5. Zuordnung von den Dateinamen zu den Funktionen">Zurordnung
+                zu den Dateinamen</a> ohne die Erweiterung. Ein
+                Verkaufsauftrag enthält hier
+                <code class="constant">sales_order</code>.</p></dd><dt><span class="term">
+                        <code class="varname">template_meta.language.description</code>
+                     </span></dt><dd><p>Beschreibung der verwendeten Sprache</p></dd><dt><span class="term">
+                        <code class="varname">template_meta.language.template_code</code>
+                     </span></dt><dd><p>Vorlagenürzel der verwendeten Sprache, identisch mit dem
+                Kürzel das im Dateinamen verwendetet wird.</p></dd><dt><span class="term">
+                        <code class="varname">template_meta.language.output_numberformat</code>
+                     </span></dt><dd><p>Zahlenformat der verwendeten Sprache in der Form
+                "<code class="constant">1.000,00</code>". Experimentell! Nur
+                interessant für Vorlagen die mit unformatierten Werten
+                arbeiten.</p></dd><dt><span class="term">
+                        <code class="varname">template_meta.language.output_dateformat</code>
+                     </span></dt><dd><p>Datumsformat der verwendeten Sprache in der Form
+                "<code class="constant">dd.mm.yyyy</code>". Experimentell! Nur
+                interessant für Vorlagen die mit unformatierten Werten
+                arbeiten.</p></dd><dt><span class="term">
+                        <code class="varname">template_meta.format</code>
+                     </span></dt><dd><p>Das angeforderte Format. Kann im Moment die Werte
+                <code class="constant">pdf</code>, <code class="constant">postscript</code>,
+                <code class="constant">html</code>, <code class="constant">opendocument</code>,
+                <code class="constant">opendocument_pdf</code> und
+                <code class="constant">excel</code> enthalten.</p></dd><dt><span class="term">
+                        <code class="varname">template_meta.extension</code>
+                     </span></dt><dd><p>Dateierweiterung, wie im Dateinamen. Wird aus
+                <code class="constant">format</code> entschieden.</p></dd><dt><span class="term">
+                        <code class="varname">template_meta.media</code>
+                     </span></dt><dd><p>Ausgabemedium. Kann zur Zeit die Werte
+                <code class="constant">screen</code> für Bildschirm,
+                <code class="constant">email</code> für E-Mmail (triggert das
+                <code class="constant">_email</code> Kürzel im Dateinamen),
+                <code class="constant">printer</code> für Drucker, und
+                <code class="constant">queue</code> für Warteschlange enthalten.</p></dd><dt><span class="term">
+                        <code class="varname">template_meta.printer.description</code>
+                     </span></dt><dd><p>Beschreibung des ausgewählten Druckers</p></dd><dt><span class="term">
+                        <code class="varname">template_meta.printer.template_code</code>
+                     </span></dt><dd><p>Vorlagenürzel des ausgewählten Druckers, identisch mit
+                dem Kürzel das im Dateinamen verwendetet wird.</p></dd></dl></div></div><div class="sect3" title="3.2.7.2. Stammdaten von Kunden und Lieferanten"><div class="titlepage"><div><div><h4 class="title"><a name="dokumentenvorlagen-und-variablen.allgemeine-variablen.kunden-lieferanten"></a>3.2.7.2. Stammdaten von Kunden und Lieferanten</h4></div></div></div><div class="variablelist"><dl><dt><span class="term">
+                        <code class="varname">account_number</code>
+                     </span></dt><dd><p>Kontonummer</p></dd><dt><span class="term">
+                        <code class="varname">bank</code>
+                     </span></dt><dd><p>Name der Bank</p></dd><dt><span class="term">
+                        <code class="varname">bank_code</code>
+                     </span></dt><dd><p>Bankleitzahl</p></dd><dt><span class="term">
+                        <code class="varname">bic</code>
+                     </span></dt><dd><p>Bank-Identifikations-Code (Bank Identifier Code,
+                BIC)</p></dd><dt><span class="term">
+                        <code class="varname">business</code>
+                     </span></dt><dd><p>Kunden-/Lieferantentyp</p></dd><dt><span class="term">
+                        <code class="varname">city</code>
+                     </span></dt><dd><p>Stadt</p></dd><dt><span class="term">
+                        <code class="varname">contact</code>
+                     </span></dt><dd><p>Kontakt</p></dd><dt><span class="term">
+                        <code class="varname">country</code>
+                     </span></dt><dd><p>Land</p></dd><dt><span class="term">
+                        <code class="varname">cp_email</code>
+                     </span></dt><dd><p>Email des Ansprechpartners</p></dd><dt><span class="term">
+                        <code class="varname">cp_givenname</code>
+                     </span></dt><dd><p>Vorname des Ansprechpartners</p></dd><dt><span class="term">
+                        <code class="varname">cp_greeting</code>
+                     </span></dt><dd><p>Anrede des Ansprechpartners</p></dd><dt><span class="term">
+                        <code class="varname">cp_name</code>
+                     </span></dt><dd><p>Name des Ansprechpartners</p></dd><dt><span class="term">
+                        <code class="varname">cp_phone1</code>
+                     </span></dt><dd><p>Telefonnummer 1 des Ansprechpartners</p></dd><dt><span class="term">
+                        <code class="varname">cp_phone2</code>
+                     </span></dt><dd><p>Telefonnummer 2 des Ansprechpartners</p></dd><dt><span class="term">
+                        <code class="varname">cp_title</code>
+                     </span></dt><dd><p>Titel des Ansprechpartners</p></dd><dt><span class="term">
+                        <code class="varname">creditlimit</code>
+                     </span></dt><dd><p>Kreditlimit</p></dd><dt><span class="term">
+                        <code class="varname">customeremail</code>
+                     </span></dt><dd><p>Email des Kunden; nur für Kunden</p></dd><dt><span class="term">
+                        <code class="varname">customerfax</code>
+                     </span></dt><dd><p>Faxnummer des Kunden; nur für Kunden</p></dd><dt><span class="term">
+                        <code class="varname">customernotes</code>
+                     </span></dt><dd><p>Bemerkungen beim Kunden; nur für Kunden</p></dd><dt><span class="term">
+                        <code class="varname">customernumber</code>
+                     </span></dt><dd><p>Kundennummer; nur für Kunden</p></dd><dt><span class="term">
+                        <code class="varname">customerphone</code>
+                     </span></dt><dd><p>Telefonnummer des Kunden; nur für Kunden</p></dd><dt><span class="term">
+                        <code class="varname">discount</code>
+                     </span></dt><dd><p>Rabatt</p></dd><dt><span class="term">
+                        <code class="varname">email</code>
+                     </span></dt><dd><p>Emailadresse</p></dd><dt><span class="term">
+                        <code class="varname">fax</code>
+                     </span></dt><dd><p>Faxnummer</p></dd><dt><span class="term">
+                        <code class="varname">homepage</code>
+                     </span></dt><dd><p>Homepage</p></dd><dt><span class="term">
+                        <code class="varname">iban</code>
+                     </span></dt><dd><p>Internationale Kontonummer (International Bank Account
+                Number, IBAN)</p></dd><dt><span class="term">
+                        <code class="varname">language</code>
+                     </span></dt><dd><p>Sprache</p></dd><dt><span class="term">
+                        <code class="varname">name</code>
+                     </span></dt><dd><p>Firmenname</p></dd><dt><span class="term">
+                        <code class="varname">payment_description</code>
+                     </span></dt><dd><p>Name der Zahlart</p></dd><dt><span class="term">
+                        <code class="varname">payment_terms</code>
+                     </span></dt><dd><p>Zahlungskonditionen</p></dd><dt><span class="term">
+                        <code class="varname">phone</code>
+                     </span></dt><dd><p>Telefonnummer</p></dd><dt><span class="term">
+                        <code class="varname">shiptocity</code>
+                     </span></dt><dd><p>Stadt (Lieferadresse) <a class="link" href="ch03s02.html#dokumentenvorlagen-und-variablen.anmerkung-shipto" title="Anmerkung">*</a>
+                        </p></dd><dt><span class="term">
+                        <code class="varname">shiptocontact</code>
+                     </span></dt><dd><p>Kontakt (Lieferadresse) <a class="link" href="ch03s02.html#dokumentenvorlagen-und-variablen.anmerkung-shipto" title="Anmerkung">*</a>
+                        </p></dd><dt><span class="term">
+                        <code class="varname">shiptocountry</code>
+                     </span></dt><dd><p>Land (Lieferadresse) <a class="link" href="ch03s02.html#dokumentenvorlagen-und-variablen.anmerkung-shipto" title="Anmerkung">*</a>
+                        </p></dd><dt><span class="term">
+                        <code class="varname">shiptodepartment1</code>
+                     </span></dt><dd><p>Abteilung 1 (Lieferadresse) <a class="link" href="ch03s02.html#dokumentenvorlagen-und-variablen.anmerkung-shipto" title="Anmerkung">*</a>
+                        </p></dd><dt><span class="term">
+                        <code class="varname">shiptodepartment2</code>
+                     </span></dt><dd><p>Abteilung 2 (Lieferadresse) <a class="link" href="ch03s02.html#dokumentenvorlagen-und-variablen.anmerkung-shipto" title="Anmerkung">*</a>
+                        </p></dd><dt><span class="term">
+                        <code class="varname">shiptoemail</code>
+                     </span></dt><dd><p>Email (Lieferadresse) <a class="link" href="ch03s02.html#dokumentenvorlagen-und-variablen.anmerkung-shipto" title="Anmerkung">*</a>
+                        </p></dd><dt><span class="term">
+                        <code class="varname">shiptofax</code>
+                     </span></dt><dd><p>Fax (Lieferadresse) <a class="link" href="ch03s02.html#dokumentenvorlagen-und-variablen.anmerkung-shipto" title="Anmerkung">*</a>
+                        </p></dd><dt><span class="term">
+                        <code class="varname">shiptoname</code>
+                     </span></dt><dd><p>Firmenname (Lieferadresse) <a class="link" href="ch03s02.html#dokumentenvorlagen-und-variablen.anmerkung-shipto" title="Anmerkung">*</a>
+                        </p></dd><dt><span class="term">
+                        <code class="varname">shiptophone</code>
+                     </span></dt><dd><p>Telefonnummer (Lieferadresse) <a class="link" href="ch03s02.html#dokumentenvorlagen-und-variablen.anmerkung-shipto" title="Anmerkung">*</a>
+                        </p></dd><dt><span class="term">
+                        <code class="varname">shiptostreet</code>
+                     </span></dt><dd><p>Straße und Hausnummer (Lieferadresse) <a class="link" href="ch03s02.html#dokumentenvorlagen-und-variablen.anmerkung-shipto" title="Anmerkung">*</a>
+                        </p></dd><dt><span class="term">
+                        <code class="varname">shiptozipcode</code>
+                     </span></dt><dd><p>Postleitzahl (Lieferadresse) <a class="link" href="ch03s02.html#dokumentenvorlagen-und-variablen.anmerkung-shipto" title="Anmerkung">*</a>
+                        </p></dd><dt><span class="term">
+                        <code class="varname">street</code>
+                     </span></dt><dd><p>Straße und Hausnummer</p></dd><dt><span class="term">
+                        <code class="varname">taxnumber</code>
+                     </span></dt><dd><p>Steuernummer</p></dd><dt><span class="term">
+                        <code class="varname">ustid</code>
+                     </span></dt><dd><p>Umsatzsteuer-Identifikationsnummer</p></dd><dt><span class="term">
+                        <code class="varname">vendoremail</code>
+                     </span></dt><dd><p>Email des Lieferanten; nur für Lieferanten</p></dd><dt><span class="term">
+                        <code class="varname">vendorfax</code>
+                     </span></dt><dd><p>Faxnummer des Lieferanten; nur für Lieferanten</p></dd><dt><span class="term">
+                        <code class="varname">vendornotes</code>
+                     </span></dt><dd><p>Bemerkungen beim Lieferanten; nur für Lieferanten</p></dd><dt><span class="term">
+                        <code class="varname">vendornumber</code>
+                     </span></dt><dd><p>Lieferantennummer; nur für Lieferanten</p></dd><dt><span class="term">
+                        <code class="varname">vendorphone</code>
+                     </span></dt><dd><p>Telefonnummer des Lieferanten; nur für
+                Lieferanten</p></dd><dt><span class="term">
+                        <code class="varname">zipcode</code>
+                     </span></dt><dd><p>Postleitzahl</p></dd></dl></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"><a name="dokumentenvorlagen-und-variablen.anmerkung-shipto"></a>Anmerkung</th></tr><tr><td align="left" valign="top"><p>Anmerkung: Sind die <code class="varname">shipto*</code>-Felder in den
+            Stammdaten nicht eingetragen, so haben die Variablen
+            <code class="varname">shipto*</code> den gleichen Wert wie die die
+            entsprechenden Variablen der Lieferdaten. Das bedeutet, dass sich
+            einige <code class="varname">shipto*</code>-Variablen so nicht in den
+            Stammdaten wiederfinden sondern schlicht Kopien der
+            Lieferdatenvariablen sind (z.B.
+            <code class="varname">shiptocontact</code>).</p></td></tr></table></div></div><div class="sect3" title="3.2.7.3. Informationen über den Bearbeiter"><div class="titlepage"><div><div><h4 class="title"><a name="dokumentenvorlagen-und-variablen.allgemein-bearbeiter"></a>3.2.7.3. Informationen über den Bearbeiter</h4></div></div></div><div class="variablelist"><dl><dt><span class="term">
+                        <code class="varname">employee_address</code>
+                     </span></dt><dd><p>Adressfeld</p></dd><dt><span class="term">
+                        <code class="varname">employee_businessnumber</code>
+                     </span></dt><dd><p>Firmennummer</p></dd><dt><span class="term">
+                        <code class="varname">employee_company</code>
+                     </span></dt><dd><p>Firmenname</p></dd><dt><span class="term">
+                        <code class="varname">employee_co_ustid</code>
+                     </span></dt><dd><p>Usatzsteuer-Identifikationsnummer</p></dd><dt><span class="term">
+                        <code class="varname">employee_duns</code>
+                     </span></dt><dd><p>DUNS-Nummer</p></dd><dt><span class="term">
+                        <code class="varname">employee_email</code>
+                     </span></dt><dd><p>Email</p></dd><dt><span class="term">
+                        <code class="varname">employee_fax</code>
+                     </span></dt><dd><p>Fax</p></dd><dt><span class="term">
+                        <code class="varname">employee_name</code>
+                     </span></dt><dd><p>voller Name</p></dd><dt><span class="term">
+                        <code class="varname">employee_signature</code>
+                     </span></dt><dd><p>Signatur</p></dd><dt><span class="term">
+                        <code class="varname">employee_taxnumber</code>
+                     </span></dt><dd><p>Steuernummer</p></dd><dt><span class="term">
+                        <code class="varname">employee_tel</code>
+                     </span></dt><dd><p>Telefonnummer</p></dd></dl></div></div><div class="sect3" title="3.2.7.4. Informationen über den Bearbeiter"><div class="titlepage"><div><div><h4 class="title"><a name="dokumentenvorlagen-und-variablen.allgemein-verkaeufer"></a>3.2.7.4. Informationen über den Bearbeiter</h4></div></div></div><div class="variablelist"><dl><dt><span class="term">
+                        <code class="varname">salesman_address</code>
+                     </span></dt><dd><p>Adressfeld</p></dd><dt><span class="term">
+                        <code class="varname">salesman_businessnumber</code>
+                     </span></dt><dd><p>Firmennummer</p></dd><dt><span class="term">
+                        <code class="varname">salesman_company</code>
+                     </span></dt><dd><p>Firmenname</p></dd><dt><span class="term">
+                        <code class="varname">salesman_co_ustid</code>
+                     </span></dt><dd><p>Usatzsteuer-Identifikationsnummer</p></dd><dt><span class="term">
+                        <code class="varname">salesman_duns</code>
+                     </span></dt><dd><p>DUNS-Nummer</p></dd><dt><span class="term">
+                        <code class="varname">salesman_email</code>
+                     </span></dt><dd><p>Email</p></dd><dt><span class="term">
+                        <code class="varname">salesman_fax</code>
+                     </span></dt><dd><p>Fax</p></dd><dt><span class="term">
+                        <code class="varname">salesman_name</code>
+                     </span></dt><dd><p>voller Name</p></dd><dt><span class="term">
+                        <code class="varname">salesman_signature</code>
+                     </span></dt><dd><p>Signatur</p></dd><dt><span class="term">
+                        <code class="varname">salesman_taxnumber</code>
+                     </span></dt><dd><p>Steuernummer</p></dd><dt><span class="term">
+                        <code class="varname">salesman_tel</code>
+                     </span></dt><dd><p>Telefonnummer</p></dd></dl></div></div><div class="sect3" title="3.2.7.5. Variablen für die einzelnen Steuern"><div class="titlepage"><div><div><h4 class="title"><a name="dokumentenvorlagen-und-variablen.allgemein-steuern"></a>3.2.7.5. Variablen für die einzelnen Steuern</h4></div></div></div><div class="variablelist"><dl><dt><span class="term">
+                        <code class="varname">tax</code>
+                     </span></dt><dd><p>Steuer</p></dd><dt><span class="term">
+                        <code class="varname">taxbase</code>
+                     </span></dt><dd><p>zu versteuernder Betrag</p></dd><dt><span class="term">
+                        <code class="varname">taxdescription</code>
+                     </span></dt><dd><p>Name der Steuer</p></dd><dt><span class="term">
+                        <code class="varname">taxrate</code>
+                     </span></dt><dd><p>Steuersatz</p></dd></dl></div></div></div><div class="sect2" title="3.2.8. Variablen in Rechnungen"><div class="titlepage"><div><div><h3 class="title"><a name="dokumentenvorlagen-und-variablen.invoice"></a>3.2.8. Variablen in Rechnungen</h3></div></div></div><div class="sect3" title="3.2.8.1. Allgemeine Variablen"><div class="titlepage"><div><div><h4 class="title"><a name="dokumentenvorlagen-und-variablen.invoice-allgemein"></a>3.2.8.1. Allgemeine Variablen</h4></div></div></div><div class="variablelist"><dl><dt><span class="term">
+                        <code class="varname">creditremaining</code>
+                     </span></dt><dd><p>Verbleibender Kredit</p></dd><dt><span class="term">
+                        <code class="varname">currency</code>
+                     </span></dt><dd><p>Währung</p></dd><dt><span class="term">
+                        <code class="varname">cusordnumber</code>
+                     </span></dt><dd><p>Bestellnummer beim Kunden</p></dd><dt><span class="term">
+                        <code class="varname">deliverydate</code>
+                     </span></dt><dd><p>Lieferdatum</p></dd><dt><span class="term">
+                        <code class="varname">duedate</code>
+                     </span></dt><dd><p>Fälligkeitsdatum</p></dd><dt><span class="term">
+                        <code class="varname">globalprojectnumber</code>
+                     </span></dt><dd><p>Projektnummer des ganzen Beleges</p></dd><dt><span class="term">
+                        <code class="varname">globalprojectdescription</code>
+                     </span></dt><dd><p>Projekbeschreibung des ganzen Beleges</p></dd><dt><span class="term">
+                        <code class="varname">intnotes</code>
+                     </span></dt><dd><p>Interne Bemerkungen</p></dd><dt><span class="term">
+                        <code class="varname">invdate</code>
+                     </span></dt><dd><p>Rechnungsdatum</p></dd><dt><span class="term">
+                        <code class="varname">invnumber</code>
+                     </span></dt><dd><p>Rechnungsnummer</p></dd><dt><span class="term">
+                        <code class="varname">invtotal</code>
+                     </span></dt><dd><p>gesamter Rechnungsbetrag</p></dd><dt><span class="term">
+                        <code class="varname">notes</code>
+                     </span></dt><dd><p>Bemerkungen der Rechnung</p></dd><dt><span class="term">
+                        <code class="varname">orddate</code>
+                     </span></dt><dd><p>Auftragsdatum</p></dd><dt><span class="term">
+                        <code class="varname">ordnumber</code>
+                     </span></dt><dd><p>Auftragsnummer, wenn die Rechnung aus einem Auftrag
+                erstellt wurde</p></dd><dt><span class="term">
+                        <code class="varname">payment_description</code>
+                     </span></dt><dd><p>Name der Zahlart</p></dd><dt><span class="term">
+                        <code class="varname">payment_terms</code>
+                     </span></dt><dd><p>Zahlungskonditionen</p></dd><dt><span class="term">
+                        <code class="varname">quodate</code>
+                     </span></dt><dd><p>Angebotsdatum</p></dd><dt><span class="term">
+                        <code class="varname">quonumber</code>
+                     </span></dt><dd><p>Angebotsnummer</p></dd><dt><span class="term">
+                        <code class="varname">shippingpoint</code>
+                     </span></dt><dd><p>Versandort</p></dd><dt><span class="term">
+                        <code class="varname">shipvia</code>
+                     </span></dt><dd><p>Transportmittel</p></dd><dt><span class="term">
+                        <code class="varname">subtotal</code>
+                     </span></dt><dd><p>Zwischensumme aller Posten ohne Steuern</p></dd><dt><span class="term">
+                        <code class="varname">total</code>
+                     </span></dt><dd><p>Restsumme der Rechnung (Summe abzüglich bereits
+                bezahlter Posten)</p></dd><dt><span class="term">
+                        <code class="varname">transaction_description</code>
+                     </span></dt><dd><p>Vorgangsbezeichnung</p></dd><dt><span class="term">
+                        <code class="varname">transdate</code>
+                     </span></dt><dd><p>Auftragsdatum wenn die Rechnung aus einem Auftrag
+                erstellt wurde</p></dd></dl></div></div><div class="sect3" title="3.2.8.2. Variablen für jeden Posten auf der Rechnung"><div class="titlepage"><div><div><h4 class="title"><a name="dokumentenvorlagen-und-variablen.invoice-posten"></a>3.2.8.2. Variablen für jeden Posten auf der Rechnung</h4></div></div></div><div class="variablelist"><dl><dt><span class="term">
+                        <code class="varname">bin</code>
+                     </span></dt><dd><p>Stellage</p></dd><dt><span class="term">
+                        <code class="varname">description</code>
+                     </span></dt><dd><p>Artikelbeschreibung</p></dd><dt><span class="term">
+                        <code class="varname">discount</code>
+                     </span></dt><dd><p>Rabatt als Betrag</p></dd><dt><span class="term">
+                        <code class="varname">discount_sub</code>
+                     </span></dt><dd><p>Zwischensumme mit Rabatt</p></dd><dt><span class="term">
+                        <code class="varname">drawing</code>
+                     </span></dt><dd><p>Zeichnung</p></dd><dt><span class="term">
+                        <code class="varname">ean</code>
+                     </span></dt><dd><p>EAN-Code</p></dd><dt><span class="term">
+                        <code class="varname">image</code>
+                     </span></dt><dd><p>Grafik</p></dd><dt><span class="term">
+                        <code class="varname">linetotal</code>
+                     </span></dt><dd><p>Zeilensumme (Anzahl * Einzelpreis)</p></dd><dt><span class="term">
+                        <code class="varname">longdescription</code>
+                     </span></dt><dd><p>Langtext</p></dd><dt><span class="term">
+                        <code class="varname">microfiche</code>
+                     </span></dt><dd><p>Mikrofilm</p></dd><dt><span class="term">
+                        <code class="varname">netprice</code>
+                     </span></dt><dd><p>Nettopreis</p></dd><dt><span class="term">
+                        <code class="varname">nodiscount_linetotal</code>
+                     </span></dt><dd><p>Zeilensumme ohne Rabatt</p></dd><dt><span class="term">
+                        <code class="varname">nodiscount_sub</code>
+                     </span></dt><dd><p>Zwischensumme ohne Rabatt</p></dd><dt><span class="term">
+                        <code class="varname">number</code>
+                     </span></dt><dd><p>Artikelnummer</p></dd><dt><span class="term">
+                        <code class="varname">ordnumber_oe</code>
+                     </span></dt><dd><p>Auftragsnummer des Originalauftrags, wenn die Rechnung
+                aus einem Sammelauftrag erstellt wurde</p></dd><dt><span class="term">
+                        <code class="varname">p_discount</code>
+                     </span></dt><dd><p>Rabatt in Prozent</p></dd><dt><span class="term">
+                        <code class="varname">partnotes</code>
+                     </span></dt><dd><p>Die beim Artikel gespeicherten Bemerkungen</p></dd><dt><span class="term">
+                        <code class="varname">partsgroup</code>
+                     </span></dt><dd><p>Warengruppe</p></dd><dt><span class="term">
+                        <code class="varname">price_factor</code>
+                     </span></dt><dd><p>Der Preisfaktor als Zahl, sofern einer eingestellt
+                ist</p></dd><dt><span class="term">
+                        <code class="varname">price_factor_name</code>
+                     </span></dt><dd><p>Der Name des Preisfaktors, sofern einer eingestellt
+                ist</p></dd><dt><span class="term">
+                        <code class="varname">projectnumber</code>
+                     </span></dt><dd><p>Projektnummer</p></dd><dt><span class="term">
+                        <code class="varname">projectdescription</code>
+                     </span></dt><dd><p>Projektbeschreibung</p></dd><dt><span class="term">
+                        <code class="varname">qty</code>
+                     </span></dt><dd><p>Anzahl</p></dd><dt><span class="term">
+                        <code class="varname">reqdate</code>
+                     </span></dt><dd><p>Lieferdatum</p></dd><dt><span class="term">
+                        <code class="varname">runningnumber</code>
+                     </span></dt><dd><p>Position auf der Rechnung (1, 2, 3...)</p></dd><dt><span class="term">
+                        <code class="varname">sellprice</code>
+                     </span></dt><dd><p>Verkaufspreis</p></dd><dt><span class="term">
+                        <code class="varname">serialnumber</code>
+                     </span></dt><dd><p>Seriennummer</p></dd><dt><span class="term">
+                        <code class="varname">tax_rate</code>
+                     </span></dt><dd><p>Steuersatz</p></dd><dt><span class="term">
+                        <code class="varname">transdate_oe</code>
+                     </span></dt><dd><p>Auftragsdatum des Originalauftrags, wenn die Rechnung
+                aus einem Sammelauftrag erstellt wurde</p></dd><dt><span class="term">
+                        <code class="varname">unit</code>
+                     </span></dt><dd><p>Einheit</p></dd><dt><span class="term">
+                        <code class="varname">weight</code>
+                     </span></dt><dd><p>Gewicht</p></dd></dl></div><p>Für jeden Posten gibt es ein Unterarray mit den Informationen
+          über Lieferanten und Lieferantenartikelnummer. Diese müssen mit
+          einer <code class="function">foreach</code>-Schleife ausgegeben werden, da
+          für jeden Artikel mehrere Lieferanteninformationen hinterlegt sein
+          können. Die Variablen dafür lauten:</p><div class="variablelist"><dl><dt><span class="term">
+                        <code class="varname">make</code>
+                     </span></dt><dd><p>Lieferant</p></dd><dt><span class="term">
+                        <code class="varname">model</code>
+                     </span></dt><dd><p>Lieferantenartikelnummer</p></dd></dl></div></div><div class="sect3" title="3.2.8.3. Variablen für die einzelnen Zahlungseingänge"><div class="titlepage"><div><div><h4 class="title"><a name="dokumentenvorlagen-und-variablen.invoice-zahlungen"></a>3.2.8.3. Variablen für die einzelnen Zahlungseingänge</h4></div></div></div><div class="variablelist"><dl><dt><span class="term">
+                        <code class="varname">payment</code>
+                     </span></dt><dd><p>Betrag</p></dd><dt><span class="term">
+                        <code class="varname">paymentaccount</code>
+                     </span></dt><dd><p>Konto</p></dd><dt><span class="term">
+                        <code class="varname">paymentdate</code>
+                     </span></dt><dd><p>Datum</p></dd><dt><span class="term">
+                        <code class="varname">paymentmemo</code>
+                     </span></dt><dd><p>Memo</p></dd><dt><span class="term">
+                        <code class="varname">paymentsource</code>
+                     </span></dt><dd><p>Beleg</p></dd></dl></div></div><div class="sect3" title="3.2.8.4. Benutzerdefinierte Kunden- und Lieferantenvariablen"><div class="titlepage"><div><div><h4 class="title"><a name="dokumentenvorlagen-und-variablen.benutzerdefinierte-variablen-vc"></a>3.2.8.4. Benutzerdefinierte Kunden- und Lieferantenvariablen</h4></div></div></div><p>Die vom Benutzer definierten Variablen für Kunden und
+          Lieferanten stehen beim Ausdruck von Einkaufs- und Verkaufsbelegen
+          ebenfalls zur Verfügung. Ihre Namen setzen sich aus dem Präfix
+          <code class="varname">vc_cvar_</code> und dem vom Benutzer festgelegten
+          Variablennamen zusammen.</p><p>Beispiel: Der Benutzer hat eine Variable namens
+          <code class="varname">number_of_employees</code> definiert, die die Anzahl der
+          Mitarbeiter des Unternehmens enthält. Diese Variable steht dann
+          unter dem Namen <code class="varname">vc_cvar_number_of_employees</code> zur
+          Verfügung.</p></div></div><div class="sect2" title="3.2.9. Variablen in Mahnungen und Rechnungen über Mahngebühren"><div class="titlepage"><div><div><h3 class="title"><a name="dokumentenvorlagen-und-variablen.dunning"></a>3.2.9. Variablen in Mahnungen und Rechnungen über Mahngebühren</h3></div></div></div><div class="sect3" title="3.2.9.1. Namen der Vorlagen"><div class="titlepage"><div><div><h4 class="title"><a name="dokumentenvorlagen-und-variablen.dunning-vorlagennamen"></a>3.2.9.1. Namen der Vorlagen</h4></div></div></div><p>Die Namen der Vorlagen werden im System-Menü vom Benutzer
+          eingegeben. Wird für ein Mahnlevel die Option zur automatischen
+          Erstellung einer Rechnung über die Mahngebühren und Zinsen
+          aktiviert, so wird der Name der Vorlage für diese Rechnung aus dem
+          Vorlagenname für diese Mahnstufe mit dem Zusatz
+          <code class="constant">_invoice</code> gebildet. Weiterhin werden die Kürzel
+          für die ausgewählte Sprache und den ausgewählten Drucker
+          angehängt.</p></div><div class="sect3" title="3.2.9.2. Allgemeine Variablen in Mahnungen"><div class="titlepage"><div><div><h4 class="title"><a name="dokumentenvorlagen-und-variablen.dunning-allgemein"></a>3.2.9.2. Allgemeine Variablen in Mahnungen</h4></div></div></div><p>Die Variablen des Verkäufers stehen wie gewohnt als
+          <code class="varname">employee_...</code> zur Verfügung. Die Adressdaten des
+          Kunden stehen als Variablen <code class="varname">name</code>,
+          <code class="varname">street</code>, <code class="varname">zipcode</code>,
+          <code class="varname">city</code>, <code class="varname">country</code>,
+          <code class="varname">department_1</code>, <code class="varname">department_2</code>,
+          und <code class="varname">email</code> zur Verfügung.</p><p>Weitere Variablen beinhalten:</p><div class="variablelist"><dl><dt><span class="term">
+                        <code class="varname">dunning_date</code>
+                     </span></dt><dd><p>Datum der Mahnung</p></dd><dt><span class="term">
+                        <code class="varname">dunning_duedate</code>
+                     </span></dt><dd><p>Fälligkeitsdatum für diese Mahhnung</p></dd><dt><span class="term">
+                        <code class="varname">dunning_id</code>
+                     </span></dt><dd><p>Mahnungsnummer</p></dd><dt><span class="term">
+                        <code class="varname">fee</code>
+                     </span></dt><dd><p>Kummulative Mahngebühren</p></dd><dt><span class="term">
+                        <code class="varname">interest_rate</code>
+                     </span></dt><dd><p>Zinssatz per anno in Prozent</p></dd><dt><span class="term">
+                        <code class="varname">total_amount</code>
+                     </span></dt><dd><p>Gesamter noch zu zahlender Betrag als
+                <code class="function">fee</code> + <code class="function">total_interest</code>
+                + <code class="function">total_open_amount</code>
+                        </p></dd><dt><span class="term">
+                        <code class="varname">total_interest</code>
+                     </span></dt><dd><p>Zinsen per anno über alle Rechnungen</p></dd><dt><span class="term">
+                        <code class="varname">total_open_amount</code>
+                     </span></dt><dd><p>Summe über alle offene Beträge der Rechnungen</p></dd></dl></div></div><div class="sect3" title="3.2.9.3. Variablen für jede gemahnte Rechnung in einer Mahnung"><div class="titlepage"><div><div><h4 class="title"><a name="dokumentenvorlagen-und-variablen.dunning-details"></a>3.2.9.3. Variablen für jede gemahnte Rechnung in einer Mahnung</h4></div></div></div><div class="variablelist"><dl><dt><span class="term">
+                        <code class="varname">dn_amount</code>
+                     </span></dt><dd><p>Rechnungssumme (brutto)</p></dd><dt><span class="term">
+                        <code class="varname">dn_duedate</code>
+                     </span></dt><dd><p>Originales Fälligkeitsdatum der Rechnung</p></dd><dt><span class="term">
+                        <code class="varname">dn_dunning_date</code>
+                     </span></dt><dd><p>Datum der Mahnung</p></dd><dt><span class="term">
+                        <code class="varname">dn_dunning_duedate</code>
+                     </span></dt><dd><p>Fälligkeitsdatum der Mahnung</p></dd><dt><span class="term">
+                        <code class="varname">dn_fee</code>
+                     </span></dt><dd><p>Kummulative Mahngebühr</p></dd><dt><span class="term">
+                        <code class="varname">dn_interest</code>
+                     </span></dt><dd><p>Zinsen per anno für diese Rechnung</p></dd><dt><span class="term">
+                        <code class="varname">dn_invnumber</code>
+                     </span></dt><dd><p>Rechnungsnummer</p></dd><dt><span class="term">
+                        <code class="varname">dn_linetotal</code>
+                     </span></dt><dd><p>Noch zu zahlender Betrag (ergibt sich aus
+                <code class="varname">dn_open_amount</code> + <code class="varname">dn_fee</code>
+                + <code class="varname">dn_interest</code>)</p></dd><dt><span class="term">
+                        <code class="varname">dn_netamount</code>
+                     </span></dt><dd><p>Rechnungssumme (netto)</p></dd><dt><span class="term">
+                        <code class="varname">dn_open_amount</code>
+                     </span></dt><dd><p>Offener Rechnungsbetrag</p></dd><dt><span class="term">
+                        <code class="varname">dn_ordnumber</code>
+                     </span></dt><dd><p>Bestellnummer</p></dd><dt><span class="term">
+                        <code class="varname">dn_transdate</code>
+                     </span></dt><dd><p>Rechnungsdatum</p></dd><dt><span class="term">
+                        <code class="varname">dn_curr</code>
+                     </span></dt><dd><p>Währung, in der die Rechnung erstellt wurde. (Die
+                Rechnungsbeträge sind aber immer in der Hauptwährung)</p></dd></dl></div></div><div class="sect3" title="3.2.9.4. Variablen in automatisch erzeugten Rechnungen über Mahngebühren"><div class="titlepage"><div><div><h4 class="title"><a name="dokumentenvorlagen-und-variablen.dunning-invoice"></a>3.2.9.4. Variablen in automatisch erzeugten Rechnungen über
+          Mahngebühren</h4></div></div></div><p>Die Variablen des Verkäufers stehen wie gewohnt als
+          <code class="varname">employee_...</code> zur Verfügung. Die Adressdaten des
+          Kunden stehen als Variablen <code class="varname">name</code>,
+          <code class="varname">street</code>, <code class="varname">zipcode</code>,
+          <code class="varname">city</code>, <code class="varname">country</code>,
+          <code class="varname">department_1</code>, <code class="varname">department_2</code>,
+          und <code class="varname">email</code> zur Verfügung.</p><p>Weitere Variablen beinhalten:</p><div class="variablelist"><dl><dt><span class="term">
+                        <code class="varname">duedate</code>
+                     </span></dt><dd><p>Fälligkeitsdatum der Rechnung</p></dd><dt><span class="term">
+                        <code class="varname">dunning_id</code>
+                     </span></dt><dd><p>Mahnungsnummer</p></dd><dt><span class="term">
+                        <code class="varname">fee</code>
+                     </span></dt><dd><p>Mahngebühren</p></dd><dt><span class="term">
+                        <code class="varname">interest</code>
+                     </span></dt><dd><p>Zinsen</p></dd><dt><span class="term">
+                        <code class="varname">invamount</code>
+                     </span></dt><dd><p>Rechnungssumme (ergibt sich aus <code class="varname">fee</code> +
+                <code class="varname">interest</code>)</p></dd><dt><span class="term">
+                        <code class="varname">invdate</code>
+                     </span></dt><dd><p>Rechnungsdatum</p></dd><dt><span class="term">
+                        <code class="varname">invnumber</code>
+                     </span></dt><dd><p>Rechnungsnummer</p></dd></dl></div></div></div><div class="sect2" title="3.2.10. Variablen in anderen Vorlagen"><div class="titlepage"><div><div><h3 class="title"><a name="dokumentenvorlagen-und-variablen.andere-vorlagen"></a>3.2.10. Variablen in anderen Vorlagen</h3></div></div></div><div class="sect3" title="3.2.10.1. Einführung"><div class="titlepage"><div><div><h4 class="title"><a name="d0e3643"></a>3.2.10.1. Einführung</h4></div></div></div><p>Die Variablen in anderen Vorlagen sind ähnlich wie in der
+          Rechnung. Allerdings heißen die Variablen, die mit
+          <code class="varname">inv</code> beginnen, jetzt anders. Bei den Angeboten
+          fangen sie mit <code class="varname">quo</code> für "quotation" an:
+          <code class="varname">quodate</code> für Angebotsdatum etc. Bei Bestellungen
+          wiederum fangen sie mit <code class="varname">ord</code> für "order" an:
+          <code class="varname">ordnumber</code> für Bestellnummer etc.</p><p>Manche Variablen sind in anderen Vorlagen hingegen gar nicht
+          vorhanden wie z.B. die für bereits verbuchte Zahlungseingänge. Dies
+          sind Variablen, die vom Geschäftsablauf her in der entsprechenden
+          Vorlage keine Bedeutung haben oder noch nicht belegt sein
+          können.</p><p>Im Folgenden werden nur wichtige Unterschiede zu den Variablen
+          in Rechnungen aufgeführt.</p></div><div class="sect3" title="3.2.10.2. Angebote und Preisanfragen"><div class="titlepage"><div><div><h4 class="title"><a name="dokumentenvorlagen-und-variablen.andere-vorlagen-quotations"></a>3.2.10.2. Angebote und Preisanfragen</h4></div></div></div><div class="variablelist"><dl><dt><span class="term">
+                        <code class="varname">quonumber</code>
+                     </span></dt><dd><p>Angebots- bzw. Anfragenummer</p></dd><dt><span class="term">
+                        <code class="varname">reqdate</code>
+                     </span></dt><dd><p>Gültigkeitsdatum (bei Angeboten) bzw. Lieferdatum (bei
+                Preisanfragen)</p></dd><dt><span class="term">
+                        <code class="varname">transdate</code>
+                     </span></dt><dd><p>Angebots- bzw. Anfragedatum</p></dd></dl></div></div><div class="sect3" title="3.2.10.3. Auftragsbestätigungen und Lieferantenaufträge"><div class="titlepage"><div><div><h4 class="title"><a name="dokumentenvorlagen-und-variablen.andere-vorlagen-orders"></a>3.2.10.3. Auftragsbestätigungen und Lieferantenaufträge</h4></div></div></div><div class="variablelist"><dl><dt><span class="term">
+                        <code class="varname">ordnumber</code>
+                     </span></dt><dd><p>Auftragsnummer</p></dd><dt><span class="term">
+                        <code class="varname">reqdate</code>
+                     </span></dt><dd><p>Lieferdatum</p></dd><dt><span class="term">
+                        <code class="varname">transdate</code>
+                     </span></dt><dd><p>Auftragsdatum</p></dd></dl></div></div><div class="sect3" title="3.2.10.4. Lieferscheine (Verkauf und Einkauf)"><div class="titlepage"><div><div><h4 class="title"><a name="dokumentenvorlagen-und-variablen.andere-vorlagen-delivery-orders"></a>3.2.10.4. Lieferscheine (Verkauf und Einkauf)</h4></div></div></div><div class="variablelist"><dl><dt><span class="term">
+                        <code class="varname">cusordnumber</code>
+                     </span></dt><dd><p>Bestellnummer des Kunden (im Verkauf) bzw. Bestellnummer
+                des Lieferanten (im Einkauf)</p></dd><dt><span class="term">
+                        <code class="varname">donumber</code>
+                     </span></dt><dd><p>Lieferscheinnummer</p></dd><dt><span class="term">
+                        <code class="varname">transdate</code>
+                     </span></dt><dd><p>Lieferscheindatum</p></dd></dl></div><p>Für jede Position eines Lieferscheines gibt es ein Unterarray
+          mit den Informationen darüber, von welchem Lager und Lagerplatz aus
+          die Waren verschickt wurden (Verkaufslieferscheine) bzw. auf welchen
+          Lagerplatz sie eingelagert wurden. Diese müssen mittels einer
+          <code class="function">foreach</code>-Schleife ausgegeben werden. Diese
+          Variablen sind:</p><div class="variablelist"><dl><dt><span class="term">
+                        <code class="varname">si_bin</code>
+                     </span></dt><dd><p>Lagerplatz</p></dd><dt><span class="term">
+                        <code class="varname">si_chargenumber</code>
+                     </span></dt><dd><p>Chargennummer</p></dd><dt><span class="term">
+                        <code class="varname">si_bestbefore</code>
+                     </span></dt><dd><p>Mindesthaltbarkeit</p></dd><dt><span class="term">
+                        <code class="varname">si_number</code>
+                     </span></dt><dd><p>Artikelnummer</p></dd><dt><span class="term">
+                        <code class="varname">si_qty</code>
+                     </span></dt><dd><p>Anzahl bzw. Menge</p></dd><dt><span class="term">
+                        <code class="varname">si_runningnumber</code>
+                     </span></dt><dd><p>Positionsnummer (1, 2, 3 etc)</p></dd><dt><span class="term">
+                        <code class="varname">si_unit</code>
+                     </span></dt><dd><p>Einheit</p></dd><dt><span class="term">
+                        <code class="varname">si_warehouse</code>
+                     </span></dt><dd><p>Lager</p></dd></dl></div></div><div class="sect3" title="3.2.10.5. Variablen für Sammelrechnung"><div class="titlepage"><div><div><h4 class="title"><a name="dokumentenvorlagen-und-variablen.andere-vorlagen-statement"></a>3.2.10.5. Variablen für Sammelrechnung</h4></div></div></div><div class="variablelist"><dl><dt><span class="term">
+                        <code class="varname">c0total</code>
+                     </span></dt><dd><p>Gesamtbetrag aller Rechnungen mit Fälligkeit &lt; 30
+                Tage</p></dd><dt><span class="term">
+                        <code class="varname">c30total</code>
+                     </span></dt><dd><p>Gesamtbetrag aller Rechnungen mit Fälligkeit &gt;= 30
+                und &lt; 60 Tage</p></dd><dt><span class="term">
+                        <code class="varname">c60total</code>
+                     </span></dt><dd><p>Gesamtbetrag aller Rechnungen mit Fälligkeit &gt;= 60
+                und &lt; 90 Tage</p></dd><dt><span class="term">
+                        <code class="varname">c90total</code>
+                     </span></dt><dd><p>Gesamtbetrag aller Rechnungen mit Fälligkeit &gt;= 90
+                Tage</p></dd><dt><span class="term">
+                        <code class="varname">total</code>
+                     </span></dt><dd><p>Gesamtbetrag aller Rechnungen</p></dd></dl></div><p>Variablen für jede Rechnungsposition in Sammelrechnung:</p><div class="variablelist"><dl><dt><span class="term">
+                        <code class="varname">invnumber</code>
+                     </span></dt><dd><p>Rechnungsnummer</p></dd><dt><span class="term">
+                        <code class="varname">invdate</code>
+                     </span></dt><dd><p>Rechnungsdatum</p></dd><dt><span class="term">
+                        <code class="varname">duedate</code>
+                     </span></dt><dd><p>Fälligkeitsdatum</p></dd><dt><span class="term">
+                        <code class="varname">amount</code>
+                     </span></dt><dd><p>Summe der Rechnung</p></dd><dt><span class="term">
+                        <code class="varname">open</code>
+                     </span></dt><dd><p>Noch offener Betrag der Rechnung</p></dd><dt><span class="term">
+                        <code class="varname">c0</code>
+                     </span></dt><dd><p>Noch offener Rechnungsbetrag mit Fälligkeit &lt; 30
+                Tage</p></dd><dt><span class="term">
+                        <code class="varname">c30</code>
+                     </span></dt><dd><p>Noch offener Rechnungsbetrag mit Fälligkeit &gt;= 30 und
+                &lt; 60 Tage</p></dd><dt><span class="term">
+                        <code class="varname">c60</code>
+                     </span></dt><dd><p>Noch offener Rechnungsbetrag mit Fälligkeit &gt;= 60 und
+                &lt; 90 Tage</p></dd><dt><span class="term">
+                        <code class="varname">c90</code>
+                     </span></dt><dd><p>Noch offener Rechnungsbetrag mit Fälligkeit &gt;= 90
+                Tage</p></dd></dl></div></div></div><div class="sect2" title="3.2.11. Blöcke, bedingte Anweisungen und Schleifen"><div class="titlepage"><div><div><h3 class="title"><a name="dokumentenvorlagen-und-variablen.bloecke"></a>3.2.11. Blöcke, bedingte Anweisungen und Schleifen</h3></div></div></div><div class="sect3" title="3.2.11.1. Einfürhung"><div class="titlepage"><div><div><h4 class="title"><a name="dokumentenvorlagen-und-variablen.bloecke.einfuehrung"></a>3.2.11.1. Einfürhung</h4></div></div></div><p>Der Parser kennt neben den Variablen einige weitere
+          Konstrukte, die gesondert behandelt werden. Diese sind wie
+          Variablennamen in spezieller Weise markiert:
+          <span class="command"><strong>&lt;%anweisung%&gt; ... &lt;%end%&gt;</strong></span>
+               </p><p>Anmerkung zum <span class="command"><strong>&lt;%end%&gt;</strong></span>: Der besseren
+          Verständlichkeit halber kann man nach dem <span class="command"><strong>end</strong></span>
+          noch beliebig weitere Wörter schreiben, um so zu markieren, welche
+          Anweisung (z.B. <span class="command"><strong>if</strong></span> oder
+          <span class="command"><strong>foreach</strong></span>) damit abgeschlossen wird.</p><p>Beispiel: Lautet der Beginn eines Blockes z.B.
+          <span class="command"><strong>&lt;%if type == "sales_quotation"%&gt;</strong></span>, so könnte
+          er mit <span class="command"><strong>&lt;%end%&gt;</strong></span> genauso abgeschlossen werden
+          wie mit <span class="command"><strong>&lt;%end if%&gt;</strong></span> oder auch
+          <span class="command"><strong>&lt;%end type == "sales_quotation"%&gt;</strong></span>.</p></div><div class="sect3" title="3.2.11.2. Der if-Block"><div class="titlepage"><div><div><h4 class="title"><a name="dokumentenvorlagen-und-variablen.bloecke.if"></a>3.2.11.2. Der if-Block</h4></div></div></div><pre class="programlisting">&lt;%if variablenname%&gt;
+...
+&lt;%end%&gt;</pre><p>Eine normale "if-then"-Bedingung. Die Zeilen zwischen dem "if"
+          und dem "end" werden nur ausgegeben, wenn die Variable
+          <code class="varname">variablenname</code> gesetzt und ungleich 0 ist.</p><p>Die Bedingung kann auch negiert werden, indem das Wort
+          <code class="function">not</code> nach dem <code class="filename">if</code> verwendet
+          wird. Beispiel:</p><pre class="programlisting">&lt;%if not cp_greeting%&gt;
+...
+&lt;%end%&gt;</pre><p>Zusätzlich zu dem einfachen Test, ob eine Variable gesetzt ist
+          oder nicht, bietet dieser Block auch die Möglichkeit, den Inhalt
+          einer Variablen mit einer festen Zeichenkette oder einer anderen
+          Variablen zu vergleichen. Ob der Vergleich mit einer Zeichenkette
+          oder einer anderen Variablen vorgenommen wird, hängt davon ab, ob
+          die rechte Seite des Vergleichsoperators in Anführungszeichen
+          gesetzt wird (Vergleich mit Zeichenkette) oder nicht (Vergleich mit
+          anderer Variablen). Zwei Beispiele, die beide Vergleiche
+          zeigen:</p><pre class="programlisting">&lt;%if var1 == "Wert"%&gt;</pre><p>Testet die Variable <code class="varname">var1</code> auf
+          übereinstimmung mit der Zeichenkette <code class="constant">Wert</code>.
+          Mittels <code class="function">!=</code> anstelle von <code class="function">==</code>
+          würde auf Ungleichheit getestet.</p><pre class="programlisting">%if var1 == var2%&gt;</pre><p>Testet die Variable <code class="varname">var1</code> auf
+          übereinstimmung mit der Variablen <code class="varname">var2</code>. Mittel
+          <code class="function">!=</code> anstelle von <code class="function">==</code> würde
+          auf Ungleichheit getestet.</p><p>Erfahrere Benutzer können neben der Tests auf (Un-)Gleichheit
+          auch Tests auf übereinstimmung mit regulären Ausdrücken ohne
+          Berücksichtung der Groß- und Kleinschreibung durchführen. Dazu dient
+          dieselbe Syntax wie oben nur mit <code class="function">=~</code> und
+          <code class="function">!~</code> als Vergleichsoperatoren.</p><p>Beispiel für einen Test, ob die Variable
+          <code class="varname">intnotes</code> (interne Bemerkungen) das Wort
+          <code class="constant">schwierig</code> enthält:</p><pre class="programlisting">&lt;%if intnotes =~ "schwierig"%&gt;</pre></div><div class="sect3" title="3.2.11.3. Der foreach-Block"><div class="titlepage"><div><div><h4 class="title"><a name="dokumentenvorlagen-und-variablen.bloecke.foreach"></a>3.2.11.3. Der foreach-Block</h4></div></div></div><pre class="programlisting">&lt;%foreach variablenname%&gt;
+...
+&lt;%end%&gt;</pre><p>Fügt die Zeilen zwischen den beiden Anweisungen so oft ein,
+          wie das Perl-Array der Variablen <code class="varname">variablenname</code>
+          Elemente enthät. Dieses Konstrukt wird zur Ausgabe der einzelnen
+          Posten einer Rechnung / eines Angebots sowie zur Ausgabe der Steuern
+          benutzt. In jedem Durchlauf werden die <a class="link" href="ch03s02.html#dokumentenvorlagen-und-variablen.invoice-posten" title="3.2.8.2. Variablen für jeden Posten auf der Rechnung">zeilenbezogenen
+          Variablen</a> jeweils auf den Wert für die aktuelle Position
+          gesetzt.</p><p>Die Syntax sieht normalerweise wie folgt aus:</p><pre class="programlisting">&lt;%foreach number%&gt;
+Position: &lt;%runningnumber%&gt;
+Anzahl: &lt;%qty%&gt;
+Artikelnummer: &lt;%number%&gt;
+Beschreibung: &lt;%description%&gt;
+...
+&lt;%end%&gt;</pre><p>Besonderheit in OpenDocument-Vorlagen: Tritt ein
+          <code class="function">&lt;%foreach%&gt;</code>-Block innerhalb einer
+          Tabellenzelle auf, so wird die komplette Tabellenzeile so oft
+          wiederholt wie notwendig. Tritt er außerhalb auf, so wird nur der
+          Inhalt zwischen <code class="function">&lt;%foreach%&gt;</code> und
+          <code class="function">&lt;%end%&gt;</code> wiederholt, nicht aber die
+          komplette Zeile, in der er steht.</p></div></div><div class="sect2" title="3.2.12. Markup-Code zur Textformatierung innerhalb von Formularen"><div class="titlepage"><div><div><h3 class="title"><a name="dokumentenvorlagen-und-variablen.markup"></a>3.2.12. Markup-Code zur Textformatierung innerhalb von
+        Formularen</h3></div></div></div><p>Wenn der Benutzer innhalb von Formularen in Lx-Office Text
+        anders formatiert haben möchte, so ist dies begrenzt möglich.
+        Lx-Office unterstützt die Textformatierung mit HTML-ähnlichen Tags.
+        Der Benutzer kann z.B. bei der Artikelbeschreibung auf einer Rechnung
+        Teile des Texts zwischen Start- und Endtags setzen. Dieser Teil wird
+        dann automatisch in Anweisungen für das ausgewählte Vorlagenformat
+        (HTML oder PDF über LaTeX) umgesetzt.</p><p>Die unterstützen Formatierungen sind:</p><div class="variablelist"><dl><dt><span class="term">&lt;b&gt;Text&lt;/b&gt;</span></dt><dd><p>Text wird in Fettdruck gesetzt.</p></dd><dt><span class="term">&lt;i&gt;Text&lt;/i&gt;</span></dt><dd><p>Text wird kursiv gesetzt.</p></dd><dt><span class="term">&lt;u&gt;Text&lt;/u&gt;</span></dt><dd><p>Text wird unterstrichen.</p></dd><dt><span class="term">&lt;s&gt;Text&lt;/s&gt;</span></dt><dd><p>Text wird durchgestrichen. Diese Formatierung ist nicht
+              bei der Ausgabe als PDF über LaTeX verfügbar.</p></dd><dt><span class="term">&lt;bullet&gt;</span></dt><dd><p>Erzeugt einen ausgefüllten Kreis für Aufzählungen (siehe
+              unten).</p></dd></dl></div><p>Der Befehl <span class="command"><strong>&lt;bullet&gt;</strong></span> funktioniert
+        momentan auch nur in Latex-Vorlagen.</p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch03.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="ch03s03.html">Weiter</a></td></tr><tr><td width="40%" align="left" valign="top">Kapitel 3. Features und Funktionen&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.3. Excel-Vorlagen</td></tr></table></div></body></html>
\ No newline at end of file
diff --git a/doc/html/ch03s03.html b/doc/html/ch03s03.html
new file mode 100644 (file)
index 0000000..f4133e9
--- /dev/null
@@ -0,0 +1,36 @@
+<html><head>
+      <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+   <title>3.3. Excel-Vorlagen</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="Lx-Office: Installation, Konfiguration, Entwicklung"><link rel="up" href="ch03.html" title="Kapitel 3. Features und Funktionen"><link rel="prev" href="ch03s02.html" title="3.2. Dokumentenvorlagen und verfügbare Variablen"><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.3. Excel-Vorlagen</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch03s02.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.3. Excel-Vorlagen"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="excel-templates"></a>3.3. Excel-Vorlagen</h2></div></div></div><div class="sect2" title="3.3.1. Zusammenfassung"><div class="titlepage"><div><div><h3 class="title"><a name="excel-templates.summary"></a>3.3.1. Zusammenfassung</h3></div></div></div><p>Dieses Dokument beschreibt den Mechanismus, mit dem
+        Exceltemplates abgearbeitet werden, und die Einschränkungen, die damit
+        einhergehen.</p></div><div class="sect2" title="3.3.2. Bedienung"><div class="titlepage"><div><div><h3 class="title"><a name="excel-templates.usage"></a>3.3.2. Bedienung</h3></div></div></div><p>Der Excel Mechanismus muss in der Konfigurationsdatei aktiviert
+        werden. Die Konfigurationsoption heißt <code class="varname">excel_templates =
+        1</code> im Abschnitt <code class="varname">[print_templates]</code>.</p><p>Eine Excelvorlage kann dann unter dem Namen einer beliebigen
+        anderen Vorlage mit der Endung <code class="filename">.xls</code> gespeichert
+        werden. In den normalen Verkaufsmasken taucht nun
+        <code class="constant">Excel</code> als auswählbares Format auf und kann von da
+        an wie LaTeX- oder OpenOffice-Vorlagen benutzt werden.</p><p>Der Sonderfall der Angebote aus der Kundenmaske ist ebenfalls
+        eine Angebotsvorlage und wird unter dem internen Namen der Angebote
+        <code class="filename">sales_quotation.xls</code> gespeichert.</p></div><div class="sect2" title="3.3.3. Variablensyntax"><div class="titlepage"><div><div><h3 class="title"><a name="excel-templates.syntax"></a>3.3.3. Variablensyntax</h3></div></div></div><p>Einfache Syntax:
+        <span class="command"><strong>&lt;&lt;varname&gt;&gt;</strong></span>
+            </p><p>Dabei sind <code class="constant">&lt;&lt;</code> und
+        <code class="constant">&gt;&gt;</code> die Delimiter. Da Excel auf festen
+        Breiten besteht, kann der Tag künstlich verlängert werden, indem
+        weitere <code class="constant">&lt;</code> oder <code class="constant">&gt;</code>
+        eingefügt werden. Der Tag muss nicht symmetrisch sein.
+        Beispiel:</p><pre class="programlisting">&lt;&lt;&lt;&lt;&lt;varname&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;</pre><p>Um die Limitierung der festen Breite zu reduzieren, können
+        weitere Variablen in einem Block interpoliert werden. Whitespace wird
+        dazwishen dann erhalten. Beispiel:</p><pre class="programlisting">&lt;&lt;&lt;&lt;&lt;varname1 varname2   varname3&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;</pre><p>Die Variablen werden interpoliert, und linksbündig mit
+        Leerzeichen auf die gewünschte Länge aufgefüllt. Ist der String zu
+        lang, werden überzählige Zeichen abgeschnitten.</p><p>Es ist ausserdem möglich, Daten rechtsbündig darzustellen, wenn
+        der Block mit einem Leerzeichen anfängt. Beispiel:</p><pre class="programlisting">&lt;&lt;&lt;&lt;&lt;&lt;            varname&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;</pre><p>Dies würde rechtsbündig triggern. Wenn bei rechtsbündiger
+        Ausrichtung Text abgeschnitten werden muss, wird er vom linken Ende
+        entfernt.</p></div><div class="sect2" title="3.3.4. Einschränkungen"><div class="titlepage"><div><div><h3 class="title"><a name="excel-templates.limitations"></a>3.3.4. Einschränkungen</h3></div></div></div><p>Das Excelformat bis 2002 ist ein binäres Format, und kann nicht
+        mit vertretbarem Aufwand editiert werden. Der Templatemechanismus
+        beschränkt sich daher darauf, Textstellen exakt durch einen anderen
+        Text zu ersetzen.</p><p>Aus dem gleichen Grund sind die Kontrolllstrukturen
+        <span class="command"><strong>&lt;%if%&gt;</strong></span> und
+        <span class="command"><strong>&lt;%foreach%&gt;</strong></span> nicht vorhanden. Der Delimiter
+        <code class="constant">&lt;% %&gt;</code> kommt in den Headerinformationen
+        evtl. vor. Deshalb wurde auf den sichereren Delimiter
+        <code class="constant">&lt;&lt;</code> und <code class="constant">&gt;&gt;</code>
+        gewechselt.</p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch03s02.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.2. Dokumentenvorlagen und verfügbare Variablen&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>
\ No newline at end of file
diff --git a/doc/html/ch04.html b/doc/html/ch04.html
new file mode 100644 (file)
index 0000000..2936dea
--- /dev/null
@@ -0,0 +1,153 @@
+<html><head>
+      <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+   <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="Lx-Office: Installation, Konfiguration, Entwicklung"><link rel="up" href="index.html" title="Lx-Office: Installation, Konfiguration, Entwicklung"><link rel="prev" href="ch03s03.html" title="3.3. Excel-Vorlagen"><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="ch03s03.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="d0e4243"></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="d0e4249"></a>4.1.1. Wie sehen globale Variablen in Perl aus?</h3></div></div></div><p>Globale Variablen liegen in einem speziellen namespace namens
+        "main", der von überall erreichbar ist. Darüber hinaus sind bareword
+        globs global und die meisten speziellen Variablen sind...
+        speziell.</p><p>Daraus ergeben sich folgende Formen:</p><div class="variablelist"><dl><dt><span class="term">
+                     <code class="literal">$main::form</code>
+                  </span></dt><dd><p>expliziter Namespace "main"</p></dd><dt><span class="term">
+                     <code class="literal">$::form</code>
+                  </span></dt><dd><p>impliziter Namespace "main"</p></dd><dt><span class="term">
+                     <code class="literal">open FILE, "file.txt"</code>
+                  </span></dt><dd><p>
+                        <code class="varname">FILE</code> ist global</p></dd><dt><span class="term">
+                     <code class="literal">$_</code>
+                  </span></dt><dd><p>speziell</p></dd></dl></div><p>Im Gegensatz zu <span class="productname">PHP</span>&#8482; gibt es kein
+        Schlüsselwort wie "<code class="function">global</code>", mit dem man
+        importieren kann. <code class="function">my</code>, <code class="function">our</code>
+        und <code class="function">local</code> machen was anderes.</p><div class="variablelist"><dl><dt><span class="term">
+                     <code class="literal">my $form</code>
+                  </span></dt><dd><p>lexikalische Variable, gültig bis zum Ende des
+              Scopes</p></dd><dt><span class="term">
+                     <code class="literal">our $form</code>
+                  </span></dt><dd><p>
+                        <code class="varname">$form</code> referenziert ab hier
+              <code class="varname">$PACKAGE::form</code>.</p></dd><dt><span class="term">
+                     <code class="literal">local $form</code>
+                  </span></dt><dd><p>Alle Änderungen an <code class="varname">$form</code> werden am Ende
+              des scopes zurückgesetzt</p></dd></dl></div></div><div class="sect2" title="4.1.2. Warum sind globale Variablen ein Problem?"><div class="titlepage"><div><div><h3 class="title"><a name="d0e4350"></a>4.1.2. Warum sind globale Variablen ein Problem?</h3></div></div></div><p>Das erste Problem ist <span class="productname">FCGI</span>&#8482;.</p><p>
+               <span class="productname">SQL-Ledger</span>&#8482; hat fast alles im globalen
+        namespace abgelegt, und erwartet, dass es da auch wiederzufinden ist.
+        Unter <span class="productname">FCGI</span>&#8482; müssen diese Sachen auch wieder
+        aufgeräumt werden, damit sie nicht in den nächsten Request kommen.
+        Einige Sachen wiederum sollen nicht gelöscht werden, wie zum Beispiel
+        Datenbankverbindungen, weil die ne Ewigkeit zum initialisieren
+        brauchen.</p><p>Das zweite Problem ist <code class="function">strict</code>. Unter
+        <code class="function">strict</code> werden alle Variablen die nicht explizit
+        mit <code class="function">Package</code>, <code class="function">my</code> oder
+        <code class="function">our</code> angegeben werden als Tippfehler angemarkert,
+        was einen vor so mancher Stunde suchen nach einem Bug erspart. Da
+        globale Variablen aber implizit mit Package angegeben werden, werden
+        die nicht geprüft, und ein Tippfehler da fällt niemandem auf.</p></div><div class="sect2" title="4.1.3. Kanonische globale Variablen"><div class="titlepage"><div><div><h3 class="title"><a name="d0e4383"></a>4.1.3. Kanonische globale Variablen</h3></div></div></div><p>Um dieses Problem im Griff zu halten gibt es einige wenige
+        globale Variablen, die kanonisch sind, und alles andere sollte
+        anderweitig umhergereicht werden.</p><p>Diese Variablen sind im Moment die folgenden neun:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>
+                     <code class="varname">$::form</code>
+                  </p></li><li class="listitem"><p>
+                     <code class="varname">%::myconfig</code>
+                  </p></li><li class="listitem"><p>
+                     <code class="varname">$::locale</code>
+                  </p></li><li class="listitem"><p>
+                     <code class="varname">$::lxdebug</code>
+                  </p></li><li class="listitem"><p>
+                     <code class="varname">$::auth</code>
+                  </p></li><li class="listitem"><p>
+                     <code class="varname">$::lx_office_conf</code>
+                  </p></li><li class="listitem"><p>
+                     <code class="varname">$::instance_conf</code>
+                  </p></li><li class="listitem"><p>
+                     <code class="varname">$::dispatcher</code>
+                  </p></li><li class="listitem"><p>
+                     <code class="varname">$::request</code>
+                  </p></li></ul></div><p>Damit diese nicht als Müllhalde misbrauch werden, im Folgenden
+        eine kurze Erläuterung was man von denn erwarten kann.</p><div class="sect3" title="4.1.3.1. $::form"><div class="titlepage"><div><div><h4 class="title"><a name="d0e4447"></a>4.1.3.1. $::form</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Ist ein Objekt der Klasse
+              "<code class="classname">Form</code>"</p></li><li class="listitem"><p>Wird nach jedem Request gelöscht</p></li><li class="listitem"><p>Muss auch in Tests und Konsolenscripts vorhanden
+              sein.</p></li><li class="listitem"><p>Enthält am Anfang eines Requests die Requestparameter vom
+              User</p></li><li class="listitem"><p>Kann zwar intern über Requestgrenzen ein Datenbankhandle
+              cachen, das wird aber momentan absichtlich zerstört</p></li></ul></div><p>
+                  <code class="varname">$::form</code> wurde unter <span class="productname">SQL
+          Ledger</span>&#8482; als Gottobjekt für alles misbraucht. Sämtliche
+          alten Funktionen unter SL/ mutieren <code class="varname">$::form</code>, das
+          heißt, alles was einem lieb ist, sollte man vor einem Aufruf von zum
+          Beispiel <code class="function">IS-&gt;retrieve_customer()</code> in
+          Sicherheit bringen.</p><p>Das Objekt der Klasse Form hat leider im Moment noch viele
+          zentrale Funktionen Gdie vom internen Zustand abhängen, deshalb
+          bitte nie einfach zerstören oder überschreiben. Es geht ziemlich
+          sicher etwas kaputt.</p><p>
+                  <code class="varname">$::form</code> ist gleichzeitig der Standard Scope
+          in den <span class="productname">Template::Toolkit</span>&#8482; Templates
+          außerhalb der Controller: der Ausdruck <code class="function">[% var
+          %]</code> greift auf <code class="varname">$::form-&gt;{var}</code> zu.
+          Unter Controllern ist der Standard Scope anders, da lautet der
+          Zugriff <code class="function">[% FORM.var %]</code>. In Druckvorlagen sind
+          normale Variablen ebenfall im <code class="varname">$::form</code> Scope, d.h.
+          <code class="function">&lt;%var%&gt;</code> zeigt auf
+          <code class="varname">$::form-&gt;{var}</code>. Innerhalb von Schleifen wird
+          <code class="varname">$::form-&gt;{TEMPLATE_ARRAYS}{var}[$index]</code>
+          bevorzugt, wenn vorhanden.</p></div><div class="sect3" title="4.1.3.2. %::myconfig"><div class="titlepage"><div><div><h4 class="title"><a name="d0e4514"></a>4.1.3.2. %::myconfig</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Das einzige Hash unter den globalen Variablen</p></li><li class="listitem"><p>Wird spätestens benötigt wenn auf die Datenbank
+              zugegriffen wird</p></li><li class="listitem"><p>Wird bei jedem Request neu erstellt.</p></li><li class="listitem"><p>Enthält die Userdaten des aktuellen Logins</p></li><li class="listitem"><p>Sollte nicht ohne Filterung irgendwo gedumpt werden oder
+              extern serialisiert werden, weil da auch der Datenbankzugriff
+              für diesenuser drinsteht.</p></li><li class="listitem"><p>Enthält unter anderem Listenbegrenzung vclimit,
+              Datumsformat dateformat und Nummernformat numberformat</p></li><li class="listitem"><p>Enthält Datenbankzugriffinformationen</p></li></ul></div><p>
+                  <code class="varname">%::myconfig</code> ist im Moment der Ersatz für
+          ein Userobjekt. Die meisten Funktionen, die etwas anhand des
+          aktuellen Users entscheiden müssen, befragen
+          <code class="varname">%::myconfig</code>.</p></div><div class="sect3" title="4.1.3.3. $::locale"><div class="titlepage"><div><div><h4 class="title"><a name="d0e4547"></a>4.1.3.3. $::locale</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Objekt der Klasse "Locale"</p></li><li class="listitem"><p>Wird pro Request erstellt</p></li><li class="listitem"><p>Muss auch für Tests und Scripte immer verfügbar
+              sein.</p></li><li class="listitem"><p>Cached intern über Requestgrenzen hinweg benutzte
+              Locales</p></li></ul></div><p>Lokalisierung für den aktuellen User. Alle Übersetzungen,
+          Zahlen- und Datumsformatierungen laufen über dieses Objekt.</p></div><div class="sect3" title="4.1.3.4. $::lxdebug"><div class="titlepage"><div><div><h4 class="title"><a name="d0e4565"></a>4.1.3.4. $::lxdebug</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Objekt der Klasse "LXDebug"</p></li><li class="listitem"><p>Wird global gecached</p></li><li class="listitem"><p>Muss immer verfügbar sein, in nahezu allen
+              Funktionen</p></li></ul></div><p>
+                  <code class="varname">$::lxdebug</code> stellt Debuggingfunktionen
+          bereit, wie "<code class="function">enter_sub</code>" und
+          "<code class="function">leave_sub</code>", mit denen in den alten Modulen ein
+          brauchbares Tracing gebaut ist, "<code class="function">log_time</code>", mit
+          der man die Wallclockzeit seit Requeststart loggen kann, sowie
+          "<code class="function">message</code>" und "<code class="function">dump</code>" mit
+          denen man flott Informationen ins Log packen kann.</p></div><div class="sect3" title="4.1.3.5. $::auth"><div class="titlepage"><div><div><h4 class="title"><a name="d0e4598"></a>4.1.3.5. $::auth</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Objekt der Klasse "SL::Auth"</p></li><li class="listitem"><p>Wird global gecached</p></li><li class="listitem"><p>Hat eine permanente DB Verbindung zur Authdatenbank</p></li><li class="listitem"><p>Wird nach jedem Request resettet.</p></li></ul></div><p>
+                  <code class="varname">$::auth</code> stellt Funktionen bereit um die
+          Rechte des aktuellen Users abzufragen. Obwohl diese Informationen
+          vom aktuellen User abhängen wird das Objekt aus
+          Geschwindigkeitsgründen nur einmal angelegt und dann nach jedem
+          Request kurz resettet.</p></div><div class="sect3" title="4.1.3.6. $::lx_office_conf"><div class="titlepage"><div><div><h4 class="title"><a name="d0e4619"></a>4.1.3.6. $::lx_office_conf</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Objekt der Klasse
+              "<code class="classname">SL::LxOfficeConf</code>"</p></li><li class="listitem"><p>Global gecached</p></li><li class="listitem"><p>Repräsentation der
+              <code class="filename">config/lx_office.conf[.default]</code>-Dateien</p></li></ul></div><p>Globale Konfiguration. Configdateien werden zum Start gelesen,
+          und nicht mehr angefasst. Es ist derzeit nicht geplant, dass das
+          Programm die Konfiguration ändern kann oder sollte.</p><p>Für die folgende Konfigurationsdatei:</p><pre class="programlisting">[debug]
+file = /tmp/lxoffice_debug_log.txt</pre><p>ist der Key <code class="varname">file</code> im Programm als
+          <code class="varname">$::lx_office_conf-&gt;{debug}{file}</code>
+          erreichbar.</p><div class="warning" title="Warnung" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Warning"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Warnung]" src="../../../../system/docbook-xsl/images/warning.png"></td><th align="left">Warnung</th></tr><tr><td align="left" valign="top"><p>Zugriff auf die Konfiguration erfolgt im Moment über
+            Hashkeys, sind also nicht gegen Tippfehler abgesichert.</p></td></tr></table></div></div><div class="sect3" title="4.1.3.7. $::instance_conf"><div class="titlepage"><div><div><h4 class="title"><a name="d0e4655"></a>4.1.3.7. $::instance_conf</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Objekt der Klasse
+              "<code class="classname">SL::InstanceConfiguration</code>"</p></li><li class="listitem"><p>wird pro Request neu erstellt</p></li></ul></div><p>Funktioniert wie <code class="varname">$::lx_office_conf</code>,
+          speichert aber Daten die von der Instanz abhängig sind. Eine Instanz
+          ist hier eine Mandantendatenbank. Prominentestes Datum ist "eur",
+          die Information ob Bilanz oder Einnahmenüberschussrechnung gemacht
+          wird.</p></div><div class="sect3" title="4.1.3.8. $::dispatcher"><div class="titlepage"><div><div><h4 class="title"><a name="d0e4673"></a>4.1.3.8. $::dispatcher</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Objekt der Klasse
+              "<code class="varname">SL::Dispatcher</code>"</p></li><li class="listitem"><p>wird pro Serverprozess erstellt.</p></li><li class="listitem"><p>enthält Informationen über die technische Verbindung zum
+              Server</p></li></ul></div><p>Der dritte Punkt ist auch der einzige Grund warum das Objekt
+          global gespeichert wird. Wird vermutlich irgendwann in einem anderen
+          Objekt untergebracht.</p></div><div class="sect3" title="4.1.3.9. $::request"><div class="titlepage"><div><div><h4 class="title"><a name="d0e4691"></a>4.1.3.9. $::request</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Hashref (evtl später Objekt)</p></li><li class="listitem"><p>Wird pro Request neu initialisiert.</p></li><li class="listitem"><p>Keine Unterstruktur garantiert.</p></li></ul></div><p>
+                  <code class="varname">$::request</code> ist ein generischer Platz um
+          Daten "für den aktuellen Request" abzulegen. Sollte nicht für action
+          at a distance benutzt werden, sondern um lokales memoizing zu
+          ermöglichen, das garantiert am Ende des Requests zerstört
+          wird.</p><p>Vieles von dem, was im moment in <code class="varname">$::form</code>
+          liegt, sollte eigentlich hier liegen. Die groben
+          Differentialkriterien sind:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Kommt es vom User, und soll unverändert wieder an den User? Dann <code class="varname">$::form</code>, steht da eh schon</p></li><li class="listitem"><p>Sind es Daten aus der Datenbank, die nur bis zum Ende des Requests gebraucht werden? Dann
+              <code class="varname">$::request</code>
+                     </p></li><li class="listitem"><p>Muss ich von anderen Teilen des Programms lesend drauf zugreifen? Dann <code class="varname">$::request</code>, aber Zugriff über
+              Wrappermethode</p></li></ul></div></div></div><div class="sect2" title="4.1.4. Ehemalige globale Variablen"><div class="titlepage"><div><div><h3 class="title"><a name="d0e4733"></a>4.1.4. Ehemalige globale Variablen</h3></div></div></div><p>Die folgenden Variablen waren einmal im Programm, und wurden
+        entfernt.</p><div class="sect3" title="4.1.4.1. $::cgi"><div class="titlepage"><div><div><h4 class="title"><a name="d0e4738"></a>4.1.4.1. $::cgi</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>war nötig, weil cookie Methoden nicht als
+              Klassenfunktionen funktionieren</p></li><li class="listitem"><p>Aufruf als Klasse erzeugt Dummyobjekt was im
+              Klassennamespace gehalten wird und über Requestgrenzen
+              leaked</p></li><li class="listitem"><p>liegt jetzt unter
+              <code class="varname">$::request-&gt;{cgi}</code>
+                     </p></li></ul></div></div><div class="sect3" title="4.1.4.2. $::all_units"><div class="titlepage"><div><div><h4 class="title"><a name="d0e4754"></a>4.1.4.2. $::all_units</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>war nötig, weil einige Funktionen in Schleifen zum Teil
+              ein paar hundert mal pro Request eine Liste der Einheiten
+              brauchen, und de als Parameter durch einen Riesenstack von
+              Funktionen geschleift werden müssten.</p></li><li class="listitem"><p>Liegt jetzt unter
+              <code class="varname">$::request-&gt;{cache}{all_units}</code>
+                     </p></li><li class="listitem"><p>Wird nur in
+              <code class="function">AM-&gt;retrieve_all_units()</code> gesetzt oder
+              gelesen.</p></li></ul></div></div><div class="sect3" title="4.1.4.3. %::called_subs"><div class="titlepage"><div><div><h4 class="title"><a name="d0e4773"></a>4.1.4.3. %::called_subs</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>wurde benutzt um callsub deep recursions
+              abzufangen.</p></li><li class="listitem"><p>Wurde entfernt, weil callsub nur einen Bruchteil der
+              möglichen Rekursioenen darstellt, und da nie welche
+              auftreten.</p></li><li class="listitem"><p>komplette recursion protection wurde entfernt.</p></li></ul></div></div></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch03s03.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.3. Excel-Vorlagen&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>
\ No newline at end of file
diff --git a/doc/html/ch04s02.html b/doc/html/ch04s02.html
new file mode 100644 (file)
index 0000000..e8b7b7b
--- /dev/null
@@ -0,0 +1,42 @@
+<html><head>
+      <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+   <title>4.2. Entwicklung unter FastCGI</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="Lx-Office: Installation, Konfiguration, Entwicklung"><link rel="up" href="ch04.html" title="Kapitel 4. Entwicklerdokumentation"><link rel="prev" href="ch04.html" title="Kapitel 4. Entwicklerdokumentation"><link rel="next" href="ch04s03.html" title="4.3. SQL-Upgradedateien"></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">4.2. Entwicklung unter FastCGI</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch04.html">Zurück</a>&nbsp;</td><th width="60%" align="center">Kapitel 4. Entwicklerdokumentation</th><td width="20%" align="right">&nbsp;<a accesskey="n" href="ch04s03.html">Weiter</a></td></tr></table><hr></div><div class="sect1" title="4.2. Entwicklung unter FastCGI"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="devel.fcgi"></a>4.2. Entwicklung unter FastCGI</h2></div></div></div><div class="sect2" title="4.2.1. Allgemeines"><div class="titlepage"><div><div><h3 class="title"><a name="devel.fcgi.general"></a>4.2.1. Allgemeines</h3></div></div></div><p>Wenn Änderungen in der Konfiguration von Lx-Office gemacht
+        werden, muss der Webserver neu gestartet werden.</p><p>Bei der Entwicklung für FastCGI ist auf ein paar Fallstricke zu
+        achten. Dadurch, dass das Programm in einer Endlosschleife läuft,
+        müssen folgende Aspekte beachtet werden.</p></div><div class="sect2" title="4.2.2. Programmende und Ausnahmen"><div class="titlepage"><div><div><h3 class="title"><a name="devel.fcgi.exiting"></a>4.2.2. Programmende und Ausnahmen</h3></div></div></div><p>Betrifft die Funktionen <code class="function">warn</code>,
+        <code class="function">die</code>, <code class="function">exit</code>,
+        <code class="function">carp</code> und <code class="function">confess</code>.</p><p>Fehler, die dass Programm normalerweise sofort beenden (fatale
+        Fehler), werden mit dem FastCGI Dispatcher abgefangen, um das Programm
+        am Laufen zu halten. Man kann mit <code class="function">die</code>,
+        <code class="function">confess</code> oder <code class="function">carp</code> Fehler
+        ausgeben, die dann vom Dispatcher angezeigt werden. Die Lx-Office
+        eigene <code class="function">$::form-</code>error()&gt; tut im Prinzip das
+        Gleiche, mit ein paar Extraoptionen. <code class="function">warn</code> und
+        <code class="function">exit</code> hingegen werden nicht abgefangen.
+        <code class="function">warn</code> wird direkt nach STDERR, also in Server Log
+        eine Nachricht schreiben (sofern in der Konfiguration nicht die
+        Warnungen in das Lx-Office Log umgeleitet wurden), und
+        <code class="function">exit</code> wird die Ausführung beenden.</p><p>Prinzipiell ist es kein Beinbruch, wenn sich der Prozess
+        beendet, fcgi wird ihn sofort neu starten. Allerdings sollte das die
+        Ausnahme sein. Quintessenz: Bitte kein <code class="function">exit</code>
+        benutzen, alle anderen Exceptionmechanismen sind ok.</p></div><div class="sect2" title="4.2.3. Globale Variablen"><div class="titlepage"><div><div><h3 class="title"><a name="devel.fcgi.globals"></a>4.2.3. Globale Variablen</h3></div></div></div><p>Um zu vermeiden, dass Informationen von einem Request in einen
+        anderen gelangen, müssen alle globalen Variablen vor einem Request
+        sauber initialisiert werden. Das ist besonders wichtig im
+        <code class="varname">$::cgi</code> und <code class="varname">$::auth</code> Objekt, weil
+        diese nicht gelöscht werden pro Instanz, sondern persistent gehalten
+        werden.</p><p>In <code class="classname">SL::Dispatcher</code> gibt es einen sauber
+        abgetrennten Block, der alle kanonischen globalen Variablen listet und
+        erklärt. Bitte keine anderen einführen ohne das sauber zu
+        dokumentieren.</p><p>Datenbankverbindungen wird noch ein Guide verfasst werden, wie
+        man sicher geht, dass man die richtige erwischt.</p></div><div class="sect2" title="4.2.4. Performance und Statistiken"><div class="titlepage"><div><div><h3 class="title"><a name="devel.fcgi.performance"></a>4.2.4. Performance und Statistiken</h3></div></div></div><p>Die kritischen Pfade des Programms sind die Belegmasken, und
+        unter diesen ganz besonders die Verkaufsrechnungsmaske. Ein Aufruf der
+        Rechnungsmaske in Lx-Office 2.4.3 stable dauert auf einem Core2duo mit
+        4GB Arbeitsspeicher und Ubuntu 9.10 eine halbe Sekunde. In der 2.6.0
+        sind es je nach Menge der definierten Variablen 1-2s. Ab der
+        Moose/Rose::DB Version sind es 5-6s.</p><p>Mit FastCGI ist die neuste Version auf 0,26 Sekunden selbst in
+        den kritischen Pfaden, unter 0,15 sonst.</p></div><div class="sect2" title="4.2.5. Bekannte Probleme"><div class="titlepage"><div><div><h3 class="title"><a name="devel.fcgi.known-issues"></a>4.2.5. Bekannte Probleme</h3></div></div></div><div class="sect3" title="4.2.5.1. Encoding Awareness"><div class="titlepage"><div><div><h4 class="title"><a name="devel.fcgi.known-issues.encoding"></a>4.2.5.1. Encoding Awareness</h4></div></div></div><p>UTF-8 kodierte Installationen sind sehr anfällig gegen
+          fehlerhfate Encodings unter FCGI. latin9 Installationen behandeln
+          falsch kodierte Zeichen eher unwissend, und geben sie einfach
+          weiter. UTF-8 verweigert bei fehlerhaften Programmpfaden kurzerhand
+          das Ausliefern. Es wird noch daran gearbeitet, alle Fehler da zu
+          beseitigen.</p></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch04.html">Zurück</a>&nbsp;</td><td width="20%" align="center"><a accesskey="u" href="ch04.html">Nach oben</a></td><td width="40%" align="right">&nbsp;<a accesskey="n" href="ch04s03.html">Weiter</a></td></tr><tr><td width="40%" align="left" valign="top">Kapitel 4. Entwicklerdokumentation&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.3. SQL-Upgradedateien</td></tr></table></div></body></html>
\ No newline at end of file
diff --git a/doc/html/ch04s03.html b/doc/html/ch04s03.html
new file mode 100644 (file)
index 0000000..41d3b50
--- /dev/null
@@ -0,0 +1,96 @@
+<html><head>
+      <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+   <title>4.3. SQL-Upgradedateien</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="Lx-Office: Installation, Konfiguration, Entwicklung"><link rel="up" href="ch04.html" title="Kapitel 4. Entwicklerdokumentation"><link rel="prev" href="ch04s02.html" title="4.2. Entwicklung unter FastCGI"><link rel="next" href="ch04s04.html" title="4.4. Translations and languages"></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">4.3. SQL-Upgradedateien</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch04s02.html">Zurück</a>&nbsp;</td><th width="60%" align="center">Kapitel 4. Entwicklerdokumentation</th><td width="20%" align="right">&nbsp;<a accesskey="n" href="ch04s04.html">Weiter</a></td></tr></table><hr></div><div class="sect1" title="4.3. SQL-Upgradedateien"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="db-upgrade-files"></a>4.3. SQL-Upgradedateien</h2></div></div></div><div class="sect2" title="4.3.1. Einführung"><div class="titlepage"><div><div><h3 class="title"><a name="db-upgrade-files.introduction"></a>4.3.1. Einführung</h3></div></div></div><p>
+       Der alte Mechanismus für SQL-Upgradescripte, der auf einer Versionsnummer beruht und dann in sql/Pg-upgrade nach einem Script für
+       diese Versionsnummer sucht, schränkt sehr ein, z.B. was die parallele Entwicklung im stable- und unstable-Baum betrifft.
+      </p><p>
+       Dieser Mechanismus wurde für Lx-Office 2.4.1 deutlich erweitert. Es werden weiterhin alle Scripte aus sql/Pg-upgrade
+       ausgeführt. Zusätzlich gibt es aber ein zweites Verzeichnis, sql/Pg-upgrade2. In diesem Verzeichnis muss pro Datenbankupgrade eine
+       Datei existieren, die neben den eigentlich auszuführenden SQL- oder Perl-Befehlen einige Kontrollinformationen enthält.
+      </p><p>
+       Neu sind die Kontrollinformationen, die Abhängigkeiten und Prioritäten definieren können werden, sodass Datenbankscripte zwar in
+       einer sicheren Reihenfolge ausgeführt werden (z.B. darf ein "ALTER TABLE" erst ausgeführt werden, wenn die Tabelle mit "CREATE TABLE"
+       angelegt wurde), diese Reihenfolge aber so flexibel ist, dass man keine Versionsnummern mehr braucht.
+      </p><p>
+       Lx-Office merkt sich dabei, welches der Upgradescripte in sql/Pg-upgrade2 bereits durchgeführt wurde und führt diese nicht erneut
+       aus. Dazu dient die Tabelle "schema_info", die bei der Anmeldung automatisch angelegt wird.
+      </p></div><div class="sect2" title="4.3.2. Format der Kontrollinformationen"><div class="titlepage"><div><div><h3 class="title"><a name="db-upgrade-files.format"></a>4.3.2. Format der Kontrollinformationen</h3></div></div></div><p>
+       Die Kontrollinformationen sollten sich am Anfang der jeweiligen Upgradedatei befinden. Jede Zeile, die Kontrollinformationen enthält,
+       hat dabei das folgende Format:
+      </p><p>
+       Für SQL-Upgradedateien:
+      </p><pre class="programlisting">-- @key: value</pre><p>
+       Für Perl-Upgradedateien:
+      </p><pre class="programlisting"># @key: value</pre><p>
+       Leerzeichen vor "<code class="varname">value</code>" werden entfernt.
+      </p><p>
+       Die folgenden Schlüsselworte werden verarbeitet:
+      </p><div class="variablelist"><dl><dt><span class="term">
+                     <code class="varname">tag</code>
+                  </span></dt><dd><p>
+          Wird zwingend benötigt. Dies ist der "Name" des Upgrades. Dieser "tag" kann von anderen Kontrolldateien in ihren Abhängigkeiten
+          verwendet werden (Schlüsselwort "<code class="varname">depends</code>"). Der "tag" ist auch der Name, der in der Datenbank eingetragen wird.
+         </p><p>
+          Normalerweise sollte die Kontrolldatei genau so heißen wie der "tag", nur mit der Endung ".sql" bzw. "pl".
+         </p><p>
+          Ein Tag darf nur aus alphanumerischen Zeichen sowie den Zeichen _ - ( ) bestehen. Insbesondere sind Leerzeichen nicht erlaubt und
+          sollten stattdessen mit Unterstrichen ersetzt werden.
+         </p></dd><dt><span class="term">
+                     <code class="varname">charset</code>
+                  </span></dt><dd><p>
+          Empfohlen. Gibt den Zeichensatz an, in dem das Script geschrieben wurde, z.B. "<code class="literal">UTF-8</code>". Aus
+          Kompatibilitätsgründen mit alten Upgrade-Scripten wird bei Abwesenheit des Tags der Zeichensatz "<code class="literal">ISO-8859-15</code>"
+          angenommen.
+         </p></dd><dt><span class="term">
+                     <code class="varname">description</code>
+                  </span></dt><dd><p>
+          Benötigt. Eine Beschreibung, was in diesem Update passiert. Diese wird dem Benutzer beim eigentlichen Datenbankupdate
+          angezeigt. Während der Tag in englisch gehalten sein sollte, sollte die Beschreibung auf Deutsch erfolgen.
+         </p></dd><dt><span class="term">
+                     <code class="varname">depends</code>
+                  </span></dt><dd><p>
+          Optional. Eine mit Leerzeichen getrennte Liste von "tags", von denen dieses Upgradescript abhängt. Lx-Office stellt sicher, dass
+          die in dieser Liste aufgeführten Scripte bereits durchgeführt wurden, bevor dieses Script ausgeführt wird.
+         </p><p>
+          Abhängigkeiten werden rekursiv betrachtet. Wenn also ein Script "b" existiert, das von Änderungen in "a" abhängt, und eine neue
+          Kontrolldatei für "c" erstellt wird, die von Änderungen in "a" und "b" abhängt, so genügt es, in "c" nur den Tag "b" als
+          Abhängigkeit zu definieren.
+         </p><p>
+          Es ist nicht erlaubt, sich selbst referenzierende Abhängigkeiten zu definieren (z.B. "a" -&gt; "b",
+          "b" -&gt; "c" und "c" -&gt; "a").
+         </p></dd><dt><span class="term">
+                     <code class="varname">priority</code>
+                  </span></dt><dd><p>
+          Optional. Ein Zahlenwert, der die Reihenfolge bestimmt, in der Scripte ausgeführt werden, die die gleichen Abhängigkeitstiefen
+          besitzen. Fehlt dieser Parameter, so wird der Wert 1000 benutzt.
+         </p><p>
+          Dies ist reine Kosmetik. Für echte Reihenfolgen muss "depends" benutzt werden. Lx-Office sortiert die auszuführenden Scripte
+          zuerst nach der Abhängigkeitstiefe (wenn "z" von "y" abhängt und "y" von "x", so hat "z" eine Abhängigkeitstiefe von 2, "y" von 1
+          und "x" von 0. "x" würde hier zuerst ausgeführt, dann "y", dann "z"), dann nach der Priorität und bei gleicher Priorität
+          alphabetisch nach dem "tag".
+         </p></dd></dl></div></div><div class="sect2" title="4.3.3. Hilfsscript dbupgrade2_tool.pl"><div class="titlepage"><div><div><h3 class="title"><a name="db-upgrade-files.dbupgrade-tool"></a>4.3.3. Hilfsscript dbupgrade2_tool.pl</h3></div></div></div><p>
+       Um die Arbeit mit den Abhängigkeiten etwas zu erleichtern, existiert ein Hilfsscript namens
+       "<code class="filename">scripts/dbupgrade2_tool.pl</code>". Es muss aus dem Lx-Office-ERP-Basisverzeichnis heraus aufgerufen werden. Dieses
+       Tool liest alle Datenbankupgradescripte aus dem Verzeichnis <code class="filename">sql/Pg-upgrade2</code> aus. Es benutzt dafür die gleichen
+       Methoden wie Lx-Office selber, sodass alle Fehlersituationen von der Kommandozeile überprüft werden können.
+      </p><p>
+       Wird dem Script kein weiterer Parameter übergeben, so wird nur eine Überprüfung der Felder und Abhängigkeiten vorgenommen. Man kann
+       sich aber auch Informationen auf verschiedene Art ausgeben lassen:
+      </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Listenform: "<span class="command"><strong>./scripts/dbupgrade2_tool.pl --list</strong></span>"</p><p>
+         Gibt eine Liste aller Scripte aus. Die Liste ist in der Reihenfolge sortiert, in der Lx-Office die Scripte ausführen würde. Es
+         werden neben der Listenposition der Tag, die Abhängigkeitstiefe und die Priorität ausgegeben.
+        </p></li><li class="listitem"><p>Baumform: "<span class="command"><strong>./scripts/dbupgrade2_tool.pl --tree</strong></span>"</p><p>
+         Listet alle Tags in Baumform basierend auf den Abhängigkeiten auf. Die "Wurzelknoten" sind dabei die Scripte, von denen keine
+         anderen abhängen. Die Unterknoten sind Scripte, die beim übergeordneten Script als Abhängigkeit eingetragen sind.
+        </p></li><li class="listitem"><p><a name="db-upgrade-files.dbupgrade-tool.reverse-tree"></a>Umgekehrte Baumform: "<span class="command"><strong>./scripts/dbupgrade2_tool.pl --rtree</strong></span>"</p><p>
+         Listet alle Tags in Baumform basierend auf den Abhängigkeiten auf.  Die "Wurzelknoten" sind dabei die Scripte mit der geringsten
+         Abhängigkeitstiefe. Die Unterknoten sind Scripte, die das übergeordnete Script als Abhängigkeit eingetragen haben.
+        </p></li><li class="listitem"><p>Baumform mit Postscriptausgabe: "<span class="command"><strong>./scripts/dbupgrade2_tool.pl --graphviz</strong></span>"</p><p>
+         Benötigt das Tool "<span class="command"><strong>graphviz</strong></span>", um mit seiner Hilfe die <a class="link" href="ch04s03.html#db-upgrade-files.dbupgrade-tool.reverse-tree">umgekehrte Baumform</a> in eine Postscriptdatei namens
+         "<code class="filename">db_dependencies.ps</code>" auszugeben. Dies ist vermutlich die übersichtlichste Form, weil hierbei jeder Knoten nur
+         einmal ausgegeben wird. Bei den Textmodusbaumformen hingegen können Knoten und all ihre Abhängigkeiten mehrfach ausgegeben werden.
+        </p></li><li class="listitem"><p>
+         Scripte, von denen kein anderes Script abhängt: "<span class="command"><strong>./scripts/dbupgrade2_tool.pl --nodeps</strong></span>"
+        </p><p>
+         Listet die Tags aller Scripte auf, von denen keine anderen Scripte abhängen.
+        </p></li></ul></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch04s02.html">Zurück</a>&nbsp;</td><td width="20%" align="center"><a accesskey="u" href="ch04.html">Nach oben</a></td><td width="40%" align="right">&nbsp;<a accesskey="n" href="ch04s04.html">Weiter</a></td></tr><tr><td width="40%" align="left" valign="top">4.2. Entwicklung unter FastCGI&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.4. Translations and languages</td></tr></table></div></body></html>
\ No newline at end of file
diff --git a/doc/html/ch04s04.html b/doc/html/ch04s04.html
new file mode 100644 (file)
index 0000000..e744c4f
--- /dev/null
@@ -0,0 +1,81 @@
+<html><head>
+      <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+   <title>4.4. Translations and languages</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="Lx-Office: Installation, Konfiguration, Entwicklung"><link rel="up" href="ch04.html" title="Kapitel 4. Entwicklerdokumentation"><link rel="prev" href="ch04s03.html" title="4.3. SQL-Upgradedateien"><link rel="next" href="ch04s05.html" title="4.5. Stil-Richtlinien"></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">4.4. Translations and languages</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch04s03.html">Zurück</a>&nbsp;</td><th width="60%" align="center">Kapitel 4. Entwicklerdokumentation</th><td width="20%" align="right">&nbsp;<a accesskey="n" href="ch04s05.html">Weiter</a></td></tr></table><hr></div><div class="sect1" title="4.4. Translations and languages"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="translations-languages"></a>4.4. Translations and languages</h2></div></div></div><div class="sect2" title="4.4.1. Introduction"><div class="titlepage"><div><div><h3 class="title"><a name="translations-languages.introduction"></a>4.4.1. Introduction</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>Dieser Abschnitt ist in Englisch geschrieben, um
+          internationalen Übersetzern die Arbeit zu erleichtern.</p></td></tr></table></div><p>This section describes how localization packages in Lx-Office
+        are built. Currently the only language fully supported is German, and
+        since most of the internal messages are held in English the English
+        version is usable too.</p><p>A stub version of French is included but not functunal at this
+        point.</p></div><div class="sect2" title="4.4.2. File structure"><div class="titlepage"><div><div><h3 class="title"><a name="translations-languages.file-structure"></a>4.4.2. File structure</h3></div></div></div><p>The structure of locales in Lx-Office is:</p><pre class="programlisting">lx-office/locale/&lt;langcode&gt;/</pre><p>where &lt;langcode&gt; stands for an abbreviation of the
+        language package. The builtin packages use two letter <a class="ulink" href="http://en.wikipedia.org/wiki/ISO_639-1" target="_top">ISO 639-1</a> codes,
+        but the actual name is not relevant for the program and can easily be
+        extended to <a class="ulink" href="http://en.wikipedia.org/wiki/IETF_language_tag" target="_top">IETF language
+        tags</a> (i.e. "en_GB"). In fact the original language packages
+        from SQL Ledger are named in this way.</p><p>In such a language directory the following files are
+        recognized:</p><div class="variablelist"><dl><dt><span class="term">LANGUAGE</span></dt><dd><p>This file is mandatory.</p><p>The <code class="filename">LANGUAGE</code> file contains the self
+              descripted name of the language. It should contain a native
+              representation first, and in parenthesis an english translation
+              after that. Example:</p><pre class="programlisting">Deutsch (German)</pre></dd><dt><span class="term">charset</span></dt><dd><p>This file should be present.</p><p>The <code class="filename">charset</code> file describes which
+              charset a language package is written in and applies to all
+              other language files in the package. It is possible to write
+              some language packages without an explicit charset, but it is
+              still strongly recommended. You'll never know in what
+              environment your language package will be used, and neither
+              UTF-8 nor Latin1 are guaranteed.</p><p>The whole content of this file is a string that can be
+              recognized as a valid charset encoding. Example:</p><pre class="programlisting">UTF-8</pre></dd><dt><span class="term">all</span></dt><dd><p>This file is mandatory.</p><p>The central translation file. It is essentially an inline
+              Perl script autogenerated by <span class="command"><strong>locales.pl</strong></span>. To
+              generate it, generate the directory and the two files mentioned
+              above, and execute the following command:</p><pre class="programlisting">scripts/locales.pl &lt;langcode&gt;</pre><p>Otherwise you can simply copy one of the other languages.
+              You will be told how many are missing like this:</p><pre class="programlisting">$ scripts/locales.pl en
+English - 0.6% - 2015/2028 missing</pre><p>A file named "<code class="filename">missing</code>" will be
+              generated and can be edited. You can also edit the
+              "<code class="filename">all</code>" file directly. Edit everything you
+              like to fit the target language and execute
+              <span class="command"><strong>locales.pl</strong></span> again. See how the missing words
+              get fewer.</p></dd><dt><span class="term">Num2text</span></dt><dd><p>Legacy code from SQL Ledger. It provides a means for
+              numbers to be converted into natural language, like
+              <code class="literal">1523 =&gt; one thousand five hundred twenty
+              three</code>. If you want to provide it, it must be inlinable
+              Perl code which provides a <code class="function">num2text</code> sub. If
+              an <code class="function">init</code> sub exists it will be executed
+              first.</p><p>Only used in the check and receipt printing module.</p></dd><dt><span class="term">special_chars</span></dt><dd><p>Lx-Office comes with a lot of interfaces to different
+              formats, some of which are rather picky with their accepted
+              charset. The <code class="filename">special_chars</code> file contains a
+              listing of chars not suited for different file format and
+              provides substitutions. It is written in "Simple Ini" style,
+              containing a block for every file format.</p><p>First entry should be the order of substitution for
+              entries as a whitespace separated list. All entries are
+              interpolated, so <code class="literal">\n</code>, <code class="literal">\x20</code>
+              and <code class="literal">\\</code> all work.</p><p>After that every entry is a special char that should be
+              translated when writing text into such a file.</p><p>Example:</p><pre class="programlisting">[Template/XML]
+order=&amp; &lt; &gt; \n
+&amp;=&amp;amp;
+&lt;=&amp;lt;
+&gt;=&amp;gt;
+\n=&lt;br&gt;</pre><p>Note the importance of the order in this example.
+              Substituting &lt; and &gt; befor &amp; would lead to $gt; become
+              &amp;amp;gt;</p><p>For a list of valid formats, see the German
+              <code class="filename">special_chars</code> entry. As of this writing the
+              following are recognized:</p><pre class="programlisting">HTML
+URL@HTML
+Template/HTML
+Template/XML
+Template/LaTeX
+Template/OpenDocument
+filenames</pre><p>The last of which is very machine dependant. Remember that
+              a lot of characters are forbidden by some filesystems, for
+              exmaple MS Windows doesn't like ':' in its files where Linux
+              doesn't mind that. If you want the files created with your
+              language pack to be portable, find all chars that could cause
+              trouble.</p></dd><dt><span class="term">missing</span></dt><dd><p>This file is not a part of the language package
+              itself.</p><p>This is a file generated by
+              <span class="command"><strong>scripts/locales.pl</strong></span> while processing your
+              locales. It's only to have the missing entries singled out and
+              does not belong to a language package.</p></dd><dt><span class="term">lost</span></dt><dd><p>This file is not a part of the language package
+              itself.</p><p>Another file generated by
+              <span class="command"><strong>scripts/locales.pl</strong></span>. If for any reason a
+              translation does not appear anymore and can be deleted, it gets
+              moved here. The last 50 or so entries deleted are saved here in
+              case you made a typo, so that you don't have to translate
+              everything again. If a tranlsation is missing, the lost file is
+              checked first. If you maintain a language package, you might
+              want to keep this safe somewhere.</p></dd></dl></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch04s03.html">Zurück</a>&nbsp;</td><td width="20%" align="center"><a accesskey="u" href="ch04.html">Nach oben</a></td><td width="40%" align="right">&nbsp;<a accesskey="n" href="ch04s05.html">Weiter</a></td></tr><tr><td width="40%" align="left" valign="top">4.3. SQL-Upgradedateien&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.5. Stil-Richtlinien</td></tr></table></div></body></html>
\ No newline at end of file
diff --git a/doc/html/ch04s05.html b/doc/html/ch04s05.html
new file mode 100644 (file)
index 0000000..442f3e0
--- /dev/null
@@ -0,0 +1,134 @@
+<html><head>
+      <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+   <title>4.5. Stil-Richtlinien</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="Lx-Office: Installation, Konfiguration, Entwicklung"><link rel="up" href="ch04.html" title="Kapitel 4. Entwicklerdokumentation"><link rel="prev" href="ch04s04.html" title="4.4. Translations and languages"><link rel="next" href="ch04s06.html" title="4.6. Dokumentation erstellen"></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">4.5. Stil-Richtlinien</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch04s04.html">Zurück</a>&nbsp;</td><th width="60%" align="center">Kapitel 4. Entwicklerdokumentation</th><td width="20%" align="right">&nbsp;<a accesskey="n" href="ch04s06.html">Weiter</a></td></tr></table><hr></div><div class="sect1" title="4.5. Stil-Richtlinien"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="devel.style-guide"></a>4.5. Stil-Richtlinien</h2></div></div></div><p>
+       Die folgenden Regeln haben das Ziel, den Code möglichst gut les- und wartbar zu machen. Dazu gehört zum Einen, dass der Code
+       einheitlich eingerückt ist, aber auch, dass Mehrdeutigkeit so weit es geht vermieden wird (Stichworte "Klammern" oder "Hash-Keys").
+      </p><p>
+       Diese Regeln sind keine Schikane sondern erleichtern allen das Leben!
+      </p><p>
+       Jeder, der einen Patch schickt, sollte seinen Code vorher überprüfen. Einige der Regeln lassen sich automatisch überprüfen, andere
+       nicht.
+      </p><div class="orderedlist"><ol class="orderedlist" type="1"><li class="listitem"><p>
+         Es werden keine echten Tabs sondern Leerzeichen verwendet.
+        </p></li><li class="listitem"><p>
+         Die Einrückung beträgt zwei Leerzeichen. Beispiel:
+        </p><pre class="programlisting">foreach my $row (@data) {
+  if ($flag) {
+    # do something with $row
+  }
+
+  if ($use_modules) {
+    $row-&gt;{modules} = MODULE-&gt;retrieve(
+      id   =&gt; $row-&gt;{id},
+      date =&gt; $use_now ? localtime() : $row-&gt;{time},
+    );
+  }
+
+  $report-&gt;add($row);
+}</pre></li><li class="listitem"><p>Öffnende geschweifte Klammern befinden sich auf der gleichen Zeile wie der letzte Befehl. Beispiele:</p><pre class="programlisting">sub debug {
+  ...
+}</pre><p>oder</p><pre class="programlisting">if ($form-&gt;{item_rows} &gt; 0) {
+  ...
+}</pre></li><li class="listitem"><p>
+         Schließende geschweifte Klammern sind so weit eingerückt wie der Befehl / die öffnende schließende Klammer, die den Block gestartet
+         hat, und nicht auf der Ebene des Inhalts. Die gleichen Beispiele wie bei 3. gelten.
+        </p></li><li class="listitem"><p>
+         Die Wörter "<code class="function">else</code>", "<code class="function">elsif</code>", "<code class="function">while</code>" befinden sich auf der gleichen
+         Zeile wie schließende geschweifte Klammern. Beispiele:
+        </p><pre class="programlisting">if ($form-&gt;{sum} &gt; 1000) {
+  ...
+} elsif ($form-&gt;{sum} &gt; 0) {
+  ...
+} else {
+  ...
+}
+
+do {
+  ...
+} until ($a &gt; 0);</pre></li><li class="listitem"><p>
+         Parameter von Funktionsaufrufen müssen mit runden Klammern versehen werden. Davon nicht betroffen sind interne Perl-Funktionen,
+         und grep-ähnliche Operatoren. Beispiel:
+        </p><pre class="programlisting">$main::lxdebug-&gt;message("Could not find file.");
+%options = map { $_ =&gt; 1 } grep { !/^#/ } @config_file;</pre></li><li class="listitem"><p>
+         Verschiedene Klammern, Ihre Ausdrücke und Leerzeichen:
+        </p><p>
+         Generell gilt: Hashkeys und Arrayindices sollten nicht durch Leerzeichen abgesetzt werden. Logische Klammerungen ebensowenig,
+         Blöcke schon. Beispiel:
+        </p><pre class="programlisting">if (($form-&gt;{debug} == 1) &amp;&amp; ($form-&gt;{sum} - 100 &lt; 0)) {
+  ...
+}
+
+$array[$i + 1]             = 4;
+$form-&gt;{sum}              += $form-&gt;{"row_$i"};
+$form-&gt;{ $form-&gt;{index} } += 1;
+
+map { $form-&gt;{sum} += $form-&gt;{"row_$_"} } 1..$rowcount;</pre></li><li class="listitem"><p>
+         Mehrzeilige Befehle
+        </p><div class="orderedlist"><ol class="orderedlist" type="a"><li class="listitem"><p>
+           Werden die Parameter eines Funktionsaufrufes auf mehrere Zeilen aufgeteilt, so sollten diese bis zu der Spalte eingerückt
+           werden, in der die ersten Funktionsparameter in der ersten Zeile stehen. Beispiel:
+          </p><pre class="programlisting">$sth = $dbh-&gt;prepare("SELECT * FROM some_table WHERE col = ?",
+                    $form-&gt;{some_col_value});</pre></li><li class="listitem"><p>
+           Ein Spezialfall ist der ternäre Oprator "?:", der am besten in einer übersichtlichen Tabellenstruktur organisiert
+           wird. Beispiel:
+          </p><pre class="programlisting">my $rowcount = $form-&gt;{"row_$i"} ? $i
+             : $form-&gt;{oldcount} ? $form-&gt;{oldcount} + 1
+             :                     $form-&gt;{rowcount} - $form-&gt;{rowbase};</pre></li></ol></div></li><li class="listitem"><p>
+         Kommentare
+        </p><div class="orderedlist"><ol class="orderedlist" type="a"><li class="listitem"><p>Kommentare, die alleine in einer Zeile stehen, sollten soweit wie der Code eingerückt sein.</p></li><li class="listitem"><p>Seitliche hängende Kommentare sollten einheitlich formatiert werden.</p></li><li class="listitem"><p>
+           Sämtliche Kommentare und Sonstiges im Quellcode ist bitte auf Englisch zu verfassen. So wie ich keine Lust habe, französischen
+           Quelltext zu lesen, sollte auch der Lx-Office Quelltext für nicht-Deutschsprachige lesbar sein. Beispiel:
+          </p><pre class="programlisting">my $found = 0;
+while (1) {
+  last if $found;
+
+  # complicated check
+  $found = 1 if //
+}
+
+$i  = 0        # initialize $i
+$n  = $i;      # save $i
+$i *= $const;  # do something crazy
+$i  = $n;      # recover $i</pre></li></ol></div></li><li class="listitem"><p>
+         Hashkeys sollten nur in Anführungszeichen stehen, wenn die Interpolation gewünscht ist. Beispiel:
+        </p><pre class="programlisting">$form-&gt;{sum}      = 0;
+$form-&gt;{"row_$i"} = $form-&gt;{"row_$i"} - 5;
+$some_hash{42}    = 54;</pre></li><li class="listitem"><p>
+         Die maximale Zeilenlänge ist nicht bescränkt. Zeilenlängen unterhalb von 79 Zeichen helfen unter bestimmten Bedingungen, aber
+         wenn die Lesbarkeit unter kurzen Zeilen leidet (wie zum Biespiel in grossen Tabellen), dann ist Lesbarkeit vorzuziehen.
+        </p><p>
+         Als Beispiel sei die Funktion <code class="function">print_options</code> aus <code class="filename">bin/mozilla/io.pl</code> angeführt.
+        </p></li><li class="listitem"><p>
+         Trailing Whitespace, d.h. Leerzeichen am Ende von Zeilen sind unerwünscht. Sie führen zu unnötigen Whitespaceänderungen, die
+         diffs verfälschen.
+        </p><p>
+         Emacs und vim haben beide recht einfache Methoden zur Entfernung von trailing whitespace. Emacs kennt das Kommande
+         <span class="command"><strong>nuke-trailing-whitespace</strong></span>, vim macht das gleiche manuell über <code class="literal">:%s/\s\+$//e</code> Mit <code class="literal">:au
+         BufWritePre * :%s/\s\+$//e</code> wird das an Speichern gebunden.
+        </p></li><li class="listitem"><p>
+         Es wird kein <span class="command"><strong>perltidy</strong></span> verwendet.
+        </p><p>
+         In der Vergangenheit wurde versucht, <span class="command"><strong>perltidy</strong></span> zu verwenden, um einen einheitlichen Stil zu erlangen. Es hat
+         sich aber gezeigt, dass <span class="command"><strong>perltidy</strong></span>s sehr eigenwilliges Verhalten, was Zeilenumbrüche angeht, oftmals gut
+         formatierten Code zerstört. Für den Interessierten sind hier die <span class="command"><strong>perltidy</strong></span>-Optionen, die grob den
+         beschriebenen Richtlinien entsprechen:
+        </p><pre class="programlisting">-syn -i=2 -nt -pt=2 -sbt=2 -ci=2 -ibc -hsc -noll -nsts -nsfs -asc -dsm
+-aws -bbc -bbs -bbb -mbl=1 -nsob -ce -nbl -nsbl -cti=0 -bbt=0 -bar -l=79
+-lp -vt=1 -vtc=1</pre></li><li class="listitem"><p>
+         
+                  <code class="varname">STDERR</code> ist tabu. Unkonditionale Debugmeldungen auch.
+        </p><p>
+         Lx-Office bietet mit dem Modul <code class="classname">LXDebug</code> einen brauchbaren Trace-/Debug-Mechanismus. Es gibt also keinen
+         Grund, nach <code class="varname">STDERR</code> zu schreiben.
+        </p><p>
+         Die <code class="classname">LXDebug</code>-Methode "<code class="function">message</code>" nimmt als ersten Paramter außerdem eine Flagmaske, für
+         die die Meldung angezeigt wird, wobei "0" immer angezeigt wird. Solche Meldungen sollten nicht eingecheckt werden und werden in
+         den meisten Fällen auch vom Repository zurückgewiesen.
+        </p></li><li class="listitem"><p>
+         Alle neuen Module müssen use strict verwenden.
+        </p><p>
+         
+                  <code class="varname">$form</code>, <code class="varname">$auth</code>, <code class="varname">$locale</code>, <code class="varname">$lxdebug</code> und
+         <code class="varname">%myconfig</code> werden derzeit aus dem main package importiert (siehe <a class="xref" href="ch04.html#devel.globals" title="4.1. Globale Variablen">Globale Variablen</a>. Alle anderen
+         Konstrukte sollten lexikalisch lokal gehalten werden.
+        </p></li></ol></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch04s04.html">Zurück</a>&nbsp;</td><td width="20%" align="center"><a accesskey="u" href="ch04.html">Nach oben</a></td><td width="40%" align="right">&nbsp;<a accesskey="n" href="ch04s06.html">Weiter</a></td></tr><tr><td width="40%" align="left" valign="top">4.4. Translations and languages&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.6. Dokumentation erstellen</td></tr></table></div></body></html>
\ No newline at end of file
diff --git a/doc/html/ch04s06.html b/doc/html/ch04s06.html
new file mode 100644 (file)
index 0000000..2c152a5
--- /dev/null
@@ -0,0 +1,39 @@
+<html><head>
+      <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+   <title>4.6. Dokumentation erstellen</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="Lx-Office: Installation, Konfiguration, Entwicklung"><link rel="up" href="ch04.html" title="Kapitel 4. Entwicklerdokumentation"><link rel="prev" href="ch04s05.html" title="4.5. Stil-Richtlinien"></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">4.6. Dokumentation erstellen</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch04s05.html">Zurück</a>&nbsp;</td><th width="60%" align="center">Kapitel 4. Entwicklerdokumentation</th><td width="20%" align="right">&nbsp;</td></tr></table><hr></div><div class="sect1" title="4.6. Dokumentation erstellen"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="devel.build-doc"></a>4.6. Dokumentation erstellen</h2></div></div></div><div class="sect2" title="4.6.1. Einführung"><div class="titlepage"><div><div><h3 class="title"><a name="devel.build-doc.introduction"></a>4.6.1. Einführung</h3></div></div></div><p>
+       Diese Dokumentation ist in <span class="productname">DocBook</span>&#8482; XML geschrieben. Zum Bearbeiten reicht grundsätzlich ein
+       Text-Editor. Mehr Komfort bekommt man, wenn man einen dedizierten XML-fähigen Editor nutzt, der spezielle Unterstützung für
+       <span class="productname">DocBook</span>&#8482; mitbringt. Wir empfehlen dafür den <a class="ulink" href="http://www.xmlmind.com/xmleditor/" target="_top">XMLmind XML
+       Editor</a>, der bei nicht kommerzieller Nutzung kostenlos ist.
+      </p></div><div class="sect2" title="4.6.2. Benötigte Software"><div class="titlepage"><div><div><h3 class="title"><a name="devel.build-doc.required-software"></a>4.6.2. Benötigte Software</h3></div></div></div><p>
+       Bei <span class="productname">DocBook</span>&#8482; ist Prinzip, dass ausschließlich die XML-Quelldatei bearbeitet wird. Aus dieser werden dann
+       mit entsprechenden Stylesheets andere Formate wie PDF oder HTML erzeugt. Bei Lx-Office übernimmt diese Aufgabe das Shell-Script
+       <span class="command"><strong>scripts/build_doc.sh</strong></span>.
+      </p><p>
+       Das Script benötigt zur Konvertierung verschiedene Softwarekomponenten, die im normalen Lx-Office-Betrieb nicht benötigt werden:
+      </p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>
+         
+                     <a class="ulink" href="http://www.oracle.com/technetwork/java/index.html" target="_top">Java</a> in einer halbwegs aktuellen Version
+        </p></li><li class="listitem"><p>
+         Das Java-Build-System <a class="ulink" href="http://ant.apache.org/" target="_top">Apache Ant</a>
+        
+                  </p></li><li class="listitem"><p>
+         Das Dokumentations-System Dobudish für <span class="productname">DocBook</span>&#8482; 4.5, eine Zusammenstellung diverser Stylesheets und
+         Grafiken zur Konvertierung von <span class="productname">DocBook</span>&#8482; XML in andere Formate. Das Paket, das benötigt wird, ist zum
+         Zeitpunkt der Dokumentationserstellung <code class="filename">dobudish-nojre-1.1.4.zip</code>, aus auf <a class="ulink" href="http://code.google.com/p/dobudish/downloads/list" target="_top">code.google.com</a> bereitsteht.
+        </p></li></ul></div><p>
+       Apache Ant sowie ein dazu passendes Java Runtime Environment sind auf allen gängigen Plattformen verfügbar. Beispiel für
+       Debian/Ubuntu:
+      </p><pre class="programlisting">apt-get install ant openjdk-7-jre</pre><p>
+       Nach dem Download von Dobudish muss Dobudish im Unterverzeichnis <code class="filename">doc/build</code> entpackt werden. Beispiel unter der
+       Annahme, das <span class="productname">Dobudish</span>&#8482; in <code class="filename">$HOME/Downloads</code> heruntergeladen wurde:
+      </p><pre class="programlisting">cd doc/build
+unzip $HOME/Downloads/dobudish-nojre-1.1.4.zip</pre></div><div class="sect2" title="4.6.3. PDFs und HTML-Seiten erstellen"><div class="titlepage"><div><div><h3 class="title"><a name="devel.build-doc.build"></a>4.6.3. PDFs und HTML-Seiten erstellen</h3></div></div></div><p>
+       Die eigentliche Konvertierung erfolgt nach Installation der benötigten Software mit einem einfachen Aufruf direkt aus dem
+       Lx-Office-Installationsverzeichnis heraus:
+      </p><pre class="programlisting">./scripts/build_doc.sh</pre></div><div class="sect2" title="4.6.4. Einchecken in das Git-Repository"><div class="titlepage"><div><div><h3 class="title"><a name="devel.build-doc.repository"></a>4.6.4. Einchecken in das Git-Repository</h3></div></div></div><p>
+       Sowohl die XML-Datei als auch die erzeugten PDF- und HTML-Dateien sind Bestandteil des Git-Repositories. Daraus folgt, dass nach
+       Änderungen am XML die PDF- und HTML-Dokumente ebenfalls gebaut und alles zusammen in einem Commit eingecheckt werden sollten.
+      </p><p>
+       Die "<code class="filename">dobudish</code>"-Verzeichnisse bzw. symbolischen Links gehören hingegen nicht in das Repository.
+      </p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch04s05.html">Zurück</a>&nbsp;</td><td width="20%" align="center"><a accesskey="u" href="ch04.html">Nach oben</a></td><td width="40%" align="right">&nbsp;</td></tr><tr><td width="40%" align="left" valign="top">4.5. Stil-Richtlinien&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;</td></tr></table></div></body></html>
\ No newline at end of file
diff --git a/doc/html/images/admon/blank.png b/doc/html/images/admon/blank.png
new file mode 100644 (file)
index 0000000..764bf4f
Binary files /dev/null and b/doc/html/images/admon/blank.png differ
diff --git a/doc/html/images/admon/caution.png b/doc/html/images/admon/caution.png
new file mode 100644 (file)
index 0000000..5b7809c
Binary files /dev/null and b/doc/html/images/admon/caution.png differ
diff --git a/doc/html/images/admon/caution.svg b/doc/html/images/admon/caution.svg
new file mode 100644 (file)
index 0000000..dd84f3f
--- /dev/null
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 9.0, SVG Export Plug-In  -->
+<!DOCTYPE svg [
+       <!ENTITY st0 "fill:#FFFFFF;stroke:none;">
+       <!ENTITY st1 "fill:#FFFFFF;stroke-width:6.6112;stroke-linecap:round;stroke-linejoin:round;">
+       <!ENTITY st2 "stroke:#FFFFFF;stroke-width:6.6112;">
+       <!ENTITY st3 "fill:none;stroke:none;">
+       <!ENTITY st4 "fill-rule:nonzero;clip-rule:nonzero;stroke:#000000;stroke-miterlimit:4;">
+       <!ENTITY st5 "stroke:none;">
+]>
+<svg  width="48pt" height="48pt" viewBox="0 0 48 48" xml:space="preserve" xmlns="http://www.w3.org/2000/svg">
+       <g id="Layer_x0020_3" style="&st4;">
+               <g>
+                       <path style="&st2;" d="M41.7,35.3L26.6,9.4c-0.6-1-1.7-1.7-2.9-1.6c-1.2,0-2.3,0.7-2.9,1.7L6.3,35.4c-0.6,1-0.6,2.3,0,3.3c0.6,1,1.7,1.6,2.9,1.6h29.6c1.2,0,2.3-0.6,2.9-1.7c0.6-1,0.6-2.3,0-3.3z"/>
+                       <path style="&st1;" d="M23.7,11L9.2,37h29.6L23.7,11z"/>
+                       <path style="&st0;" d="M23.7,11.9L10.3,36.1h27.5l-14-24.1z"/>
+                       <g>
+                               <path style="&st5;" d="M24.1,34c-1.1,0-1.8-0.8-1.8-1.8c0-1.1,0.7-1.8,1.8-1.8c1.1,0,1.8,0.7,1.8,1.8c0,1-0.7,1.8-1.8,1.8h0z M22.9,29.3l-0.4-9.1h3.2l-0.4,9.1h-2.3z"/>
+                       </g>
+               </g>
+       </g>
+       <g id="crop_x0020_marks" style="&st4;">
+               <path style="&st3;" d="M48,48H0V0h48v48z"/>
+       </g>
+</svg>
diff --git a/doc/html/images/admon/draft.png b/doc/html/images/admon/draft.png
new file mode 100644 (file)
index 0000000..59673fe
Binary files /dev/null and b/doc/html/images/admon/draft.png differ
diff --git a/doc/html/images/admon/home.png b/doc/html/images/admon/home.png
new file mode 100644 (file)
index 0000000..cbb711d
Binary files /dev/null and b/doc/html/images/admon/home.png differ
diff --git a/doc/html/images/admon/home.svg b/doc/html/images/admon/home.svg
new file mode 100644 (file)
index 0000000..e803a31
--- /dev/null
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 9.0, SVG Export Plug-In  -->
+<!DOCTYPE svg [
+       <!ENTITY st0 "fill-rule:nonzero;clip-rule:nonzero;fill:#FFFFFF;stroke:#000000;stroke-miterlimit:4;">
+       <!ENTITY st1 "fill:none;stroke:none;">
+       <!ENTITY st2 "fill:#000000;">
+       <!ENTITY st3 "fill:none;stroke:#FFFFFF;stroke-width:6.3469;stroke-linejoin:round;">
+       <!ENTITY st4 "fill-rule:evenodd;clip-rule:evenodd;stroke:none;">
+       <!ENTITY st5 "fill-rule:nonzero;clip-rule:nonzero;stroke:#000000;stroke-miterlimit:4;">
+]>
+<svg  width="48pt" height="48pt" viewBox="0 0 48 48" xml:space="preserve" xmlns="http://www.w3.org/2000/svg">
+       <g id="Layer_x0020_3" style="&st0;">
+               <g style="&st4;">
+                       <path style="&st3;" d="M22.9,7.1L5.1,21.8l0,0c-0.3,0.3-0.5,0.8-0.5,1.2c0,0.2,0,0.4,0.1,0.6c0.3,0.6,0.9,1,1.6,1c0,0,1.1,0,2.2,0c0,2.4,0,14.2,0,14.2c0,1.1,0.8,1.9,1.8,1.9h27.4c1.1,0,1.9-0.9,1.9-2c0,0,0-11.8,0-14.2c1,0,2,0,2,0c0.8,0,1.4-0.5,1.7-1.2
+                               c0.1-0.2,0.1-0.4,0.1-0.6c0-0.5-0.2-1-0.7-1.4c0,0-3.6-3-4.5-3.7c0-1.2,0-6.9,0-6.9c0-1.2-0.8-2-2-2h-4.8c-1,0-1.7,0.6-1.9,1.5c-1.9-1.6-4.1-3.5-4.1-3.5l0.1,0.1c-0.7-0.7-1.8-0.8-2.7-0.1z"/>
+                       <path style="&st2;" d="M22.9,7.1L5.1,21.8l0,0c-0.3,0.3-0.5,0.8-0.5,1.2c0,0.2,0,0.4,0.1,0.6c0.3,0.6,0.9,1,1.6,1c0,0,1.1,0,2.2,0c0,2.4,0,14.2,0,14.2c0,1.1,0.8,1.9,1.8,1.9h27.4c1.1,0,1.9-0.9,1.9-2c0,0,0-11.8,0-14.2c1,0,2,0,2,0c0.8,0,1.4-0.5,1.7-1.2
+                               c0.1-0.2,0.1-0.4,0.1-0.6c0-0.5-0.2-1-0.7-1.4c0,0-3.6-3-4.5-3.7c0-1.2,0-6.9,0-6.9c0-1.2-0.8-2-2-2h-4.8c-1,0-1.7,0.6-1.9,1.5c-1.9-1.6-4.1-3.5-4.1-3.5l0.1,0.1c-0.7-0.7-1.8-0.8-2.7-0.1z"/>
+                       <path style="&st2;" d="M41.8,22.8l-5.1-4.2v-0.1L31,13.7v0l-6.5-5.5C24.2,8,24,8,23.8,8.2L6.2,22.9c-0.1,0.1-0.1,0.3,0.1,0.3h1.6H10h28.1h1.2h2.3c0.2,0,0.4-0.2,0.2-0.4z"/>
+                       <path d="M35.8,16.8l0-5.1c0-0.2-0.1-0.4-0.3-0.4h-3.2c-0.2,0-0.3,0.1-0.3,0.3v2.2l3.9,2.9z"/>
+                       <path d="M11.9,24.7V37c0,0.3,0.1,0.4,0.3,0.4h23.6c0.3,0,0.4-0.2,0.4-0.4V24.7H11.9z"/>
+               </g>
+       </g>
+       <g id="crop_x0020_marks" style="&st5;">
+               <path style="&st1;" d="M48,48H0V0h48v48z"/>
+       </g>
+</svg>
diff --git a/doc/html/images/admon/important.png b/doc/html/images/admon/important.png
new file mode 100644 (file)
index 0000000..12c90f6
Binary files /dev/null and b/doc/html/images/admon/important.png differ
diff --git a/doc/html/images/admon/important.svg b/doc/html/images/admon/important.svg
new file mode 100644 (file)
index 0000000..dd84f3f
--- /dev/null
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 9.0, SVG Export Plug-In  -->
+<!DOCTYPE svg [
+       <!ENTITY st0 "fill:#FFFFFF;stroke:none;">
+       <!ENTITY st1 "fill:#FFFFFF;stroke-width:6.6112;stroke-linecap:round;stroke-linejoin:round;">
+       <!ENTITY st2 "stroke:#FFFFFF;stroke-width:6.6112;">
+       <!ENTITY st3 "fill:none;stroke:none;">
+       <!ENTITY st4 "fill-rule:nonzero;clip-rule:nonzero;stroke:#000000;stroke-miterlimit:4;">
+       <!ENTITY st5 "stroke:none;">
+]>
+<svg  width="48pt" height="48pt" viewBox="0 0 48 48" xml:space="preserve" xmlns="http://www.w3.org/2000/svg">
+       <g id="Layer_x0020_3" style="&st4;">
+               <g>
+                       <path style="&st2;" d="M41.7,35.3L26.6,9.4c-0.6-1-1.7-1.7-2.9-1.6c-1.2,0-2.3,0.7-2.9,1.7L6.3,35.4c-0.6,1-0.6,2.3,0,3.3c0.6,1,1.7,1.6,2.9,1.6h29.6c1.2,0,2.3-0.6,2.9-1.7c0.6-1,0.6-2.3,0-3.3z"/>
+                       <path style="&st1;" d="M23.7,11L9.2,37h29.6L23.7,11z"/>
+                       <path style="&st0;" d="M23.7,11.9L10.3,36.1h27.5l-14-24.1z"/>
+                       <g>
+                               <path style="&st5;" d="M24.1,34c-1.1,0-1.8-0.8-1.8-1.8c0-1.1,0.7-1.8,1.8-1.8c1.1,0,1.8,0.7,1.8,1.8c0,1-0.7,1.8-1.8,1.8h0z M22.9,29.3l-0.4-9.1h3.2l-0.4,9.1h-2.3z"/>
+                       </g>
+               </g>
+       </g>
+       <g id="crop_x0020_marks" style="&st4;">
+               <path style="&st3;" d="M48,48H0V0h48v48z"/>
+       </g>
+</svg>
diff --git a/doc/html/images/admon/next.png b/doc/html/images/admon/next.png
new file mode 100644 (file)
index 0000000..45835bf
Binary files /dev/null and b/doc/html/images/admon/next.png differ
diff --git a/doc/html/images/admon/next.svg b/doc/html/images/admon/next.svg
new file mode 100644 (file)
index 0000000..75fa83e
--- /dev/null
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 9.0, SVG Export Plug-In  -->
+<!DOCTYPE svg [
+       <!ENTITY st0 "fill:none;stroke:none;">
+       <!ENTITY st1 "fill:#FFFFFF;stroke:#FFFFFF;stroke-width:7.5901;stroke-linejoin:round;">
+       <!ENTITY st2 "fill-rule:nonzero;clip-rule:nonzero;stroke:#000000;stroke-miterlimit:4;">
+       <!ENTITY st3 "stroke:none;">
+]>
+<svg  width="48pt" height="48pt" viewBox="0 0 48 48" xml:space="preserve" xmlns="http://www.w3.org/2000/svg">
+       <g id="Layer_x0020_3" style="&st2;">
+               <g>
+                       <path style="&st1;" d="M22.4,41.1c0,0.3,0.3,0.3,0.5,0.2l16.6-16.9c0.5-0.5,0.4-0.7,0-1L22.9,6.7c-0.1-0.1-0.4-0.1-0.4,0.1v10H8.9c-0.3,0-0.5,0.2-0.5,0.4l0,13.3C8.4,30.9,8.6,31,9,31h13.5l-0.1,10.1z"/>
+                       <path style="&st3;" d="M22.4,41.1c0,0.3,0.3,0.3,0.5,0.2l16.6-16.9c0.5-0.5,0.4-0.7,0-1L22.9,6.7c-0.1-0.1-0.4-0.1-0.4,0.1v10H8.9c-0.3,0-0.5,0.2-0.5,0.4l0,13.3C8.4,30.9,8.6,31,9,31h13.5l-0.1,10.1z"/>
+               </g>
+       </g>
+       <g id="crop_x0020_marks" style="&st2;">
+               <path style="&st0;" d="M48,48H0V0h48v48z"/>
+       </g>
+</svg>
diff --git a/doc/html/images/admon/note.png b/doc/html/images/admon/note.png
new file mode 100644 (file)
index 0000000..d0c3c64
Binary files /dev/null and b/doc/html/images/admon/note.png differ
diff --git a/doc/html/images/admon/note.svg b/doc/html/images/admon/note.svg
new file mode 100644 (file)
index 0000000..648299d
--- /dev/null
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 9.0, SVG Export Plug-In  -->
+<!DOCTYPE svg [
+       <!ENTITY st0 "fill:none;stroke:#FFFFFF;stroke-width:12.1438;stroke-linejoin:round;">
+       <!ENTITY st1 "fill:none;stroke-width:1.2429;">
+       <!ENTITY st2 "fill:#FFFFFF;stroke:none;">
+       <!ENTITY st3 "fill:none;stroke:#FFFFFF;stroke-width:12.7649;stroke-linejoin:round;">
+       <!ENTITY st4 "fill:#FFFFFF;stroke-width:6.3824;stroke-linejoin:round;">
+       <!ENTITY st5 "fill:none;stroke:none;">
+       <!ENTITY st6 "fill-rule:nonzero;clip-rule:nonzero;stroke:#000000;stroke-miterlimit:4;">
+       <!ENTITY st7 "fill:#FFFFFF;stroke:#FFFFFF;stroke-width:12.7649;stroke-linejoin:round;">
+       <!ENTITY st8 "stroke:none;">
+       <!ENTITY st9 "fill:none;stroke-width:4.9715;stroke-linejoin:round;">
+]>
+<svg  xmlns="http://www.w3.org/2000/svg" width="48pt" height="48pt" viewBox="0 0 48 48" xml:space="preserve">
+       <g id="Layer_x0020_1" style="&st6;">
+               <path style="&st0;" d="M35.7,19.8v18.9H11V8.8h13.9l10.8,11z"/>
+               <path style="&st3;" d="M38.7,30.4L25,16.7l-7.7-3l2.7,8.7l13.3,13.4l5.4-5.4z"/>
+               <path style="&st7;" d="M35.7,8.8H11v29.9h24.7V8.8z"/>
+               <path style="&st4;" d="M35.7,8.8H11v29.9h24.7V8.8z"/>
+               <path style="&st2;" d="M35.7,8.8H11v29.9h24.7V8.8z"/>
+       </g>
+       <g id="Layer_x0020_4" style="&st6;">
+               <path style="&st9;" d="M38.7,30.4L25,16.7l-7.7-3l2.7,8.7l13.3,13.4l5.4-5.4z"/>
+               <path style="&st8;" d="M38.7,30.4L25,16.7l-7.7-3l2.7,8.7l13.3,13.4l5.4-5.4z"/>
+               <path style="&st8;" d="M20.6,14.7l-2.5,2.5L17,13.4l3.6,1.3z"/>
+               <path style="&st1;" d="M19.6,22.2l3-0.3l2.4-2.4l0.4-2.8"/>
+               <path style="&st2;" d="M20.4,14.9L18.3,17l1.6,5.2l2.7-0.3l2.4-2.4l0.3-2.4l-5-2.2z"/>
+       </g>
+       <g id="crop" style="&st6;">
+               <path style="&st5;" d="M48,48H0V0h48v48z"/>
+       </g>
+</svg>
diff --git a/doc/html/images/admon/prev.png b/doc/html/images/admon/prev.png
new file mode 100644 (file)
index 0000000..cf24654
Binary files /dev/null and b/doc/html/images/admon/prev.png differ
diff --git a/doc/html/images/admon/prev.svg b/doc/html/images/admon/prev.svg
new file mode 100644 (file)
index 0000000..6d88ffd
--- /dev/null
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 9.0, SVG Export Plug-In  -->
+<!DOCTYPE svg [
+       <!ENTITY st0 "fill:none;stroke:none;">
+       <!ENTITY st1 "fill:#FFFFFF;stroke:#FFFFFF;stroke-width:7.5901;stroke-linejoin:round;">
+       <!ENTITY st2 "fill-rule:nonzero;clip-rule:nonzero;stroke:#000000;stroke-miterlimit:4;">
+       <!ENTITY st3 "stroke:none;">
+]>
+<svg  width="48pt" height="48pt" viewBox="0 0 48 48" xml:space="preserve" xmlns="http://www.w3.org/2000/svg">
+       <g id="Layer_x0020_3" style="&st2;">
+               <g>
+                       <path style="&st1;" d="M25.6,6.9c0-0.3-0.3-0.3-0.5-0.2L8.4,23.6c-0.5,0.5-0.4,0.7,0,1l16.6,16.6c0.1,0.1,0.4,0.1,0.4-0.1v-10h13.6c0.3,0,0.5-0.2,0.5-0.4l0-13.3c0-0.3-0.2-0.5-0.5-0.5H25.5l0.1-10.1z"/>
+                       <path style="&st3;" d="M25.6,6.9c0-0.3-0.3-0.3-0.5-0.2L8.4,23.6c-0.5,0.5-0.4,0.7,0,1l16.6,16.6c0.1,0.1,0.4,0.1,0.4-0.1v-10h13.6c0.3,0,0.5-0.2,0.5-0.4l0-13.3c0-0.3-0.2-0.5-0.5-0.5H25.5l0.1-10.1z"/>
+               </g>
+       </g>
+       <g id="crop_x0020_marks" style="&st2;">
+               <path style="&st0;" d="M48,48H0V0h48v48z"/>
+       </g>
+</svg>
diff --git a/doc/html/images/admon/tip.png b/doc/html/images/admon/tip.png
new file mode 100644 (file)
index 0000000..5c4aab3
Binary files /dev/null and b/doc/html/images/admon/tip.png differ
diff --git a/doc/html/images/admon/tip.svg b/doc/html/images/admon/tip.svg
new file mode 100644 (file)
index 0000000..4a64a15
--- /dev/null
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 9.0, SVG Export Plug-In  -->
+<!DOCTYPE svg [
+       <!ENTITY st0 "fill:none;stroke:#000000;stroke-width:1.0944;">
+       <!ENTITY st1 "fill:#FFFFFF;stroke:none;">
+       <!ENTITY st2 "fill-rule:nonzero;clip-rule:nonzero;stroke:#FFFFFF;stroke-width:5.6139;stroke-miterlimit:4;">
+       <!ENTITY st3 "fill:none;stroke:none;">
+       <!ENTITY st4 "fill-rule:nonzero;clip-rule:nonzero;stroke:#000000;stroke-miterlimit:4;">
+       <!ENTITY st5 "stroke:none;">
+]>
+<svg  width="48pt" height="48pt" viewBox="0 0 48 48" xml:space="preserve" xmlns="http://www.w3.org/2000/svg">
+       <g id="Layer_x0020_3" style="&st2;">
+               <g>
+                       <path d="M9.5,18.6c0,8,6.5,14.4,14.4,14.4c8,0,14.4-6.5,14.4-14.4c0-8-6.5-14.4-14.4-14.4c-8,0-14.4,6.5-14.4,14.4z M12.8,18.6c0-6.2,5-11.2,11.2-11.2c6.2,0,11.2,5,11.2,11.2c0,6.2-5,11.2-11.2,11.2c-6.2,0-11.2-5-11.2-11.2z"/>
+                       <path d="M28.1,37.9l-7.6,0.8c-0.9,0.1-1.5,0.9-1.4,1.8c0.1,0.9,0.9,1.5,1.8,1.4l7.6-0.8c0.9-0.1,1.5-0.9,1.4-1.8c-0.1-0.9-0.9-1.5-1.8-1.4z"/>
+                       <path d="M28.1,34.8l-7.6,0.8c-0.9,0.1-1.5,0.9-1.4,1.8c0.1,0.9,0.9,1.5,1.8,1.4l7.6-0.8c0.9-0.1,1.5-0.9,1.4-1.8c-0.1-0.9-0.9-1.5-1.8-1.4z"/>
+                       <path d="M28.1,31.6l-7.6,0.8c-0.9,0.1-1.5,0.9-1.4,1.8s0.9,1.5,1.8,1.4l7.6-0.8c0.9-0.1,1.5-0.9,1.4-1.8s-0.9-1.5-1.8-1.4z"/>
+                       <path d="M23.1,41.3v0.9c0,0.9,0.7,1.6,1.6,1.6c0.9,0,1.6-0.7,1.6-1.6v-0.9h-3.3z"/>
+                       <path style="&st1;" d="M35.9,18.7c0,6.6-5.4,12-12,12c-6.6,0-12-5.4-12-12s5.4-12,12-12c6.6,0,12,5.4,12,12z"/>
+                       <path style="&st5;" d="M9.6,18.6c0,8,6.5,14.4,14.4,14.4c8,0,14.4-6.5,14.4-14.4c0-8-6.5-14.4-14.4-14.4c-8,0-14.4,6.5-14.4,14.4z M12.9,18.6c0-6.2,5-11.2,11.2-11.2c6.2,0,11.2,5,11.2,11.2c0,6.2-5,11.2-11.2,11.2c-6.2,0-11.2-5-11.2-11.2z"/>
+                       <path style="&st5;" d="M28.2,37.9l-7.6,0.8c-0.9,0.1-1.5,0.9-1.4,1.8c0.1,0.9,0.9,1.5,1.8,1.4l7.6-0.8c0.9-0.1,1.5-0.9,1.4-1.8c-0.1-0.9-0.9-1.5-1.8-1.4z"/>
+                       <path style="&st5;" d="M28.2,34.7l-7.6,0.8c-0.9,0.1-1.5,0.9-1.4,1.8c0.1,0.9,0.9,1.5,1.8,1.4l7.6-0.8c0.9-0.1,1.5-0.9,1.4-1.8c-0.1-0.9-0.9-1.5-1.8-1.4z"/>
+                       <path style="&st5;" d="M28.2,31.6l-7.6,0.8c-0.9,0.1-1.5,0.9-1.4,1.8c0.1,0.9,0.9,1.5,1.8,1.4l7.6-0.8c0.9-0.1,1.5-0.9,1.4-1.8c-0.1-0.9-0.9-1.5-1.8-1.4z"/>
+                       <path style="&st5;" d="M23.1,41.3v0.9c0,0.9,0.7,1.6,1.6,1.6s1.6-0.7,1.6-1.6v-0.9h-3.3z"/>
+                       <path style="&st0;" d="M22.3,28.3l-3.5-10.7c0,0,6.6,3.9,10.5,0"/>
+               </g>
+       </g>
+       <g id="crop_x0020_marks" style="&st4;">
+               <path style="&st3;" d="M48,48H0V0h48v48z"/>
+       </g>
+</svg>
diff --git a/doc/html/images/admon/toc-blank.png b/doc/html/images/admon/toc-blank.png
new file mode 100644 (file)
index 0000000..6ffad17
Binary files /dev/null and b/doc/html/images/admon/toc-blank.png differ
diff --git a/doc/html/images/admon/toc-minus.png b/doc/html/images/admon/toc-minus.png
new file mode 100644 (file)
index 0000000..abbb020
Binary files /dev/null and b/doc/html/images/admon/toc-minus.png differ
diff --git a/doc/html/images/admon/toc-plus.png b/doc/html/images/admon/toc-plus.png
new file mode 100644 (file)
index 0000000..941312c
Binary files /dev/null and b/doc/html/images/admon/toc-plus.png differ
diff --git a/doc/html/images/admon/up.png b/doc/html/images/admon/up.png
new file mode 100644 (file)
index 0000000..07634de
Binary files /dev/null and b/doc/html/images/admon/up.png differ
diff --git a/doc/html/images/admon/up.svg b/doc/html/images/admon/up.svg
new file mode 100644 (file)
index 0000000..d31aa9c
--- /dev/null
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 9.0, SVG Export Plug-In  -->
+<!DOCTYPE svg [
+       <!ENTITY st0 "fill:none;stroke:none;">
+       <!ENTITY st1 "fill:#FFFFFF;stroke:#FFFFFF;stroke-width:7.5901;stroke-linejoin:round;">
+       <!ENTITY st2 "fill-rule:nonzero;clip-rule:nonzero;stroke:#000000;stroke-miterlimit:4;">
+       <!ENTITY st3 "stroke:none;">
+]>
+<svg  width="48pt" height="48pt" viewBox="0 0 48 48" xml:space="preserve" xmlns="http://www.w3.org/2000/svg">
+       <g id="Layer_x0020_3" style="&st2;">
+               <g>
+                       <path style="&st1;" d="M41.1,25.6c0.3,0,0.3-0.3,0.2-0.5L24.4,8.4c-0.5-0.5-0.7-0.4-1,0L6.7,25.1c-0.1,0.1-0.1,0.4,0.1,0.4h10v13.6c0,0.3,0.2,0.5,0.4,0.5l13.3,0c0.3,0,0.5-0.2,0.5-0.5V25.5l10.1,0.1z"/>
+                       <path style="&st3;" d="M41.1,25.6c0.3,0,0.3-0.3,0.2-0.5L24.4,8.4c-0.5-0.5-0.7-0.4-1,0L6.7,25.1c-0.1,0.1-0.1,0.4,0.1,0.4h10v13.6c0,0.3,0.2,0.5,0.4,0.5l13.3,0c0.3,0,0.5-0.2,0.5-0.5V25.5l10.1,0.1z"/>
+               </g>
+       </g>
+       <g id="crop_x0020_marks" style="&st2;">
+               <path style="&st0;" d="M48,48H0V0h48v48z"/>
+       </g>
+</svg>
diff --git a/doc/html/images/admon/warning.png b/doc/html/images/admon/warning.png
new file mode 100644 (file)
index 0000000..1c33db8
Binary files /dev/null and b/doc/html/images/admon/warning.png differ
diff --git a/doc/html/images/admon/warning.svg b/doc/html/images/admon/warning.svg
new file mode 100644 (file)
index 0000000..fc8d748
--- /dev/null
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- Generator: Adobe Illustrator 9.0, SVG Export Plug-In  -->
+<!DOCTYPE svg [
+       <!ENTITY st0 "fill:#000000;stroke:#FFFFFF;stroke-width:7.9139;stroke-linejoin:round;">
+       <!ENTITY st1 "fill-rule:nonzero;clip-rule:nonzero;fill:#FFFFFF;stroke:#000000;stroke-miterlimit:4;">
+       <!ENTITY st2 "fill:none;stroke:none;">
+       <!ENTITY st3 "fill:#000000;">
+       <!ENTITY st4 "fill-rule:evenodd;clip-rule:evenodd;stroke:none;">
+       <!ENTITY st5 "fill-rule:nonzero;clip-rule:nonzero;stroke:#000000;stroke-miterlimit:4;">
+]>
+<svg  width="48pt" height="48pt" viewBox="0 0 48 48" xml:space="preserve" xmlns="http://www.w3.org/2000/svg">
+       <g id="Layer_x0020_4" style="&st1;">
+               <g style="&st4;">
+                       <path style="&st0;" d="M16.4,42.3L5.7,31.6V16.4L16.4,5.7h15.2l10.7,10.7v15.2L31.6,42.3H16.4z"/>
+                       <path style="&st3;" d="M16.4,42.3L5.7,31.6V16.4L16.4,5.7h15.2l10.7,10.7v15.2L31.6,42.3H16.4z"/>
+                       <path d="M11.7,17.7l18.7,18.7l5.9-5.9L17.6,11.7l-5.9,5.9z"/>
+                       <path d="M11.7,30.5l5.9,5.9l18.7-18.7l-5.9-5.9L11.7,30.5z"/>
+               </g>
+       </g>
+       <g id="crop_x0020_marks" style="&st5;">
+               <path style="&st2;" d="M48,48H0V0h48v48z"/>
+       </g>
+</svg>
diff --git a/doc/html/images/aquadot.jpg b/doc/html/images/aquadot.jpg
new file mode 100644 (file)
index 0000000..853a0d8
Binary files /dev/null and b/doc/html/images/aquadot.jpg differ
diff --git a/doc/html/images/callouts/1.png b/doc/html/images/callouts/1.png
new file mode 100644 (file)
index 0000000..7d47343
Binary files /dev/null and b/doc/html/images/callouts/1.png differ
diff --git a/doc/html/images/callouts/10.png b/doc/html/images/callouts/10.png
new file mode 100644 (file)
index 0000000..997bbc8
Binary files /dev/null and b/doc/html/images/callouts/10.png differ
diff --git a/doc/html/images/callouts/2.png b/doc/html/images/callouts/2.png
new file mode 100644 (file)
index 0000000..5d09341
Binary files /dev/null and b/doc/html/images/callouts/2.png differ
diff --git a/doc/html/images/callouts/3.png b/doc/html/images/callouts/3.png
new file mode 100644 (file)
index 0000000..ef7b700
Binary files /dev/null and b/doc/html/images/callouts/3.png differ
diff --git a/doc/html/images/callouts/4.png b/doc/html/images/callouts/4.png
new file mode 100644 (file)
index 0000000..adb8364
Binary files /dev/null and b/doc/html/images/callouts/4.png differ
diff --git a/doc/html/images/callouts/5.png b/doc/html/images/callouts/5.png
new file mode 100644 (file)
index 0000000..4d7eb46
Binary files /dev/null and b/doc/html/images/callouts/5.png differ
diff --git a/doc/html/images/callouts/6.png b/doc/html/images/callouts/6.png
new file mode 100644 (file)
index 0000000..0ba694a
Binary files /dev/null and b/doc/html/images/callouts/6.png differ
diff --git a/doc/html/images/callouts/7.png b/doc/html/images/callouts/7.png
new file mode 100644 (file)
index 0000000..472e96f
Binary files /dev/null and b/doc/html/images/callouts/7.png differ
diff --git a/doc/html/images/callouts/8.png b/doc/html/images/callouts/8.png
new file mode 100644 (file)
index 0000000..5e60973
Binary files /dev/null and b/doc/html/images/callouts/8.png differ
diff --git a/doc/html/images/callouts/9.png b/doc/html/images/callouts/9.png
new file mode 100644 (file)
index 0000000..a0676d2
Binary files /dev/null and b/doc/html/images/callouts/9.png differ
diff --git a/doc/html/images/draft.png b/doc/html/images/draft.png
new file mode 100644 (file)
index 0000000..1c9d23c
Binary files /dev/null and b/doc/html/images/draft.png differ
diff --git a/doc/html/images/out.png b/doc/html/images/out.png
new file mode 100644 (file)
index 0000000..c3ae876
Binary files /dev/null and b/doc/html/images/out.png differ
diff --git a/doc/html/images/quoleft.gif b/doc/html/images/quoleft.gif
new file mode 100644 (file)
index 0000000..b16218b
Binary files /dev/null and b/doc/html/images/quoleft.gif differ
diff --git a/doc/html/images/skr04-update-3804/konto3804.png b/doc/html/images/skr04-update-3804/konto3804.png
new file mode 100644 (file)
index 0000000..e66b66a
Binary files /dev/null and b/doc/html/images/skr04-update-3804/konto3804.png differ
diff --git a/doc/html/images/skr04-update-3804/konto4315.png b/doc/html/images/skr04-update-3804/konto4315.png
new file mode 100644 (file)
index 0000000..d9971cf
Binary files /dev/null and b/doc/html/images/skr04-update-3804/konto4315.png differ
diff --git a/doc/html/images/skr04-update-3804/steuer3803.png b/doc/html/images/skr04-update-3804/steuer3803.png
new file mode 100644 (file)
index 0000000..361c0b3
Binary files /dev/null and b/doc/html/images/skr04-update-3804/steuer3803.png differ
diff --git a/doc/html/images/skr04-update-3804/steuer3804.png b/doc/html/images/skr04-update-3804/steuer3804.png
new file mode 100644 (file)
index 0000000..fad5986
Binary files /dev/null and b/doc/html/images/skr04-update-3804/steuer3804.png differ
diff --git a/doc/html/images/skr04-update-3804/steuerliste.png b/doc/html/images/skr04-update-3804/steuerliste.png
new file mode 100644 (file)
index 0000000..2c4945c
Binary files /dev/null and b/doc/html/images/skr04-update-3804/steuerliste.png differ
diff --git a/doc/html/images/somerights.png b/doc/html/images/somerights.png
new file mode 100644 (file)
index 0000000..1792d8b
Binary files /dev/null and b/doc/html/images/somerights.png differ
diff --git a/doc/html/index.html b/doc/html/index.html
new file mode 100644 (file)
index 0000000..e045d18
--- /dev/null
@@ -0,0 +1,5 @@
+<html><head>
+      <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+   <title>Lx-Office: 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="Lx-Office: 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">Lx-Office: Installation, Konfiguration, Entwicklung</th></tr><tr><td width="20%" align="left">&nbsp;</td><th width="60%" align="center">&nbsp;</th><td width="20%" align="right">&nbsp;<a accesskey="n" href="ch01.html">Weiter</a></td></tr></table><hr></div><div lang="de" class="book" title="Lx-Office: Installation, Konfiguration, Entwicklung"><div class="titlepage"><div><div><h1 class="title"><a name="ding.xml"></a>Lx-Office: Installation, Konfiguration, Entwicklung</h1></div></div><hr></div><div class="toc"><p><b>Inhaltsverzeichnis</b></p><dl><dt><span class="chapter"><a href="ch01.html">1. Aktuelle Hinweise</a></span></dt><dt><span class="chapter"><a href="ch02.html">2. Installation und Grundkonfiguration</a></span></dt><dd><dl><dt><span class="sect1"><a href="ch02.html#Ben%C3%B6tigte-Software-und-Pakete">2.1. Benötigte Software und Pakete</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch02.html#Betriebssystem">2.1.1. Betriebssystem</a></span></dt><dt><span class="sect2"><a href="ch02.html#Pakete">2.1.2. Pakete</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch02s02.html">2.2. Manuelle Installation des Programmpaketes</a></span></dt><dt><span class="sect1"><a href="ch02s03.html">2.3. Lx-Office-Konfigurationsdatei</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch02s03.html#config.config-file.introduction">2.3.1. Einführung</a></span></dt><dt><span class="sect2"><a href="ch02s03.html#config.config-file.sections-parameters">2.3.2. Abschnitte und Parameter</a></span></dt><dt><span class="sect2"><a href="ch02s03.html#config.config-file.prior-versions">2.3.3. Versionen vor 2.6.3</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch02s04.html">2.4. Anpassung der PostgreSQL-Konfiguration</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch02s04.html#Zeichens%C3%A4tze-die-Verwendung-von-UTF-8">2.4.1. Zeichensätze/die Verwendung von UTF-8</a></span></dt><dt><span class="sect2"><a href="ch02s04.html#%C3%84nderungen-an-Konfigurationsdateien">2.4.2. Änderungen an Konfigurationsdateien</a></span></dt><dt><span class="sect2"><a href="ch02s04.html#Erweiterung-f%C3%BCr-servergespeicherte-Prozeduren">2.4.3. Erweiterung für servergespeicherte Prozeduren</a></span></dt><dt><span class="sect2"><a href="ch02s04.html#Datenbankbenutzer-anlegen">2.4.4. Datenbankbenutzer anlegen</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch02s05.html">2.5. Webserver-Konfiguration</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch02s05.html#d0e508">2.5.1. Grundkonfiguration mittels CGI</a></span></dt><dt><span class="sect2"><a href="ch02s05.html#Apache-Konfiguration.FCGI">2.5.2. Konfiguration für FastCGI/FCGI</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch02s06.html">2.6. Der Task-Server</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch02s06.html#Konfiguration-des-Task-Servers">2.6.1. Verfügbare und notwendige Konfigurationsoptionen</a></span></dt><dt><span class="sect2"><a href="ch02s06.html#Einbinden-in-den-Boot-Prozess">2.6.2. Automatisches Starten des Task-Servers beim Booten</a></span></dt><dt><span class="sect2"><a href="ch02s06.html#Prozesskontrolle">2.6.3. Wie der Task-Server gestartet und beendet wird</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch02s07.html">2.7. Benutzerauthentifizierung und Administratorpasswort</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch02s07.html#Grundlagen-zur-Benutzerauthentifizierung">2.7.1. Grundlagen zur Benutzerauthentifizierung</a></span></dt><dt><span class="sect2"><a href="ch02s07.html#Administratorpasswort">2.7.2. Administratorpasswort</a></span></dt><dt><span class="sect2"><a href="ch02s07.html#Authentifizierungsdatenbank">2.7.3. Authentifizierungsdatenbank</a></span></dt><dt><span class="sect2"><a href="ch02s07.html#Passwort%C3%BCberpr%C3%BCfung">2.7.4. Passwortüberprüfung</a></span></dt><dt><span class="sect2"><a href="ch02s07.html#Name-des-Session-Cookies">2.7.5. Name des Session-Cookies</a></span></dt><dt><span class="sect2"><a href="ch02s07.html#Anlegen-der-Authentifizierungsdatenbank">2.7.6. Anlegen der Authentifizierungsdatenbank</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch02s08.html">2.8. Benutzer- und Gruppenverwaltung</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch02s08.html#Zusammenh%C3%A4nge">2.8.1. Zusammenhänge</a></span></dt><dt><span class="sect2"><a href="ch02s08.html#Datenbanken-anlegen">2.8.2. Datenbanken anlegen</a></span></dt><dt><span class="sect2"><a href="ch02s08.html#Gruppen-anlegen">2.8.3. Gruppen anlegen</a></span></dt><dt><span class="sect2"><a href="ch02s08.html#Benutzer-anlegen">2.8.4. Benutzer anlegen</a></span></dt><dt><span class="sect2"><a href="ch02s08.html#Gruppenmitgliedschaften-verwalten">2.8.5. Gruppenmitgliedschaften verwalten</a></span></dt><dt><span class="sect2"><a href="ch02s08.html#Migration-alter-Installationen">2.8.6. Migration alter Installationen</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch02s09.html">2.9. Drucken mit Lx-Office</a></span></dt><dt><span class="sect1"><a href="ch02s10.html">2.10. OpenDocument-Vorlagen</a></span></dt><dt><span class="sect1"><a href="ch02s11.html">2.11. Konfiguration zur Einnahmenüberschussrechnung/Bilanzierung: EUR</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch02s11.html#config.eur.introduction">2.11.1. Einführung</a></span></dt><dt><span class="sect2"><a href="ch02s11.html#config.eur.parameters">2.11.2. Konfigurationsparameter</a></span></dt><dt><span class="sect2"><a href="ch02s11.html#config.eur.setting-parameters">2.11.3. Festlegen der Parameter</a></span></dt><dt><span class="sect2"><a href="ch02s11.html#config.eur.inventory-system-perpetual">2.11.4. Bemerkungen zu Bestandsmethode</a></span></dt><dt><span class="sect2"><a href="ch02s11.html#config.eur.knonw-issues">2.11.5. Bekannte Probleme</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch02s12.html">2.12. Lx-Office 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.reports">3.1.3. Auflisten</a></span></dt><dt><span class="sect2"><a href="ch03.html#features.periodic-invoices.task-server">3.1.4. Erzeugung der eigentlichen Rechnungen</a></span></dt><dt><span class="sect2"><a href="ch03.html#features.periodic-invoices.create-for-current-month">3.1.5. Erste Rechnung für aktuellen Monat erstellen</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch03s02.html">3.2. Dokumentenvorlagen und verfügbare Variablen</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch03s02.html#dokumentenvorlagen-und-variablen.einf%C3%BChrung">3.2.1. Einführung</a></span></dt><dt><span class="sect2"><a href="ch03s02.html#dokumentenvorlagen-und-variablen.variablen-ausgeben">3.2.2. Variablen ausgeben</a></span></dt><dt><span class="sect2"><a href="ch03s02.html#dokumentenvorlagen-und-variablen.verwendung-in-druckbefehlen">3.2.3. Verwendung in Druckbefehlen</a></span></dt><dt><span class="sect2"><a href="ch03s02.html#dokumentenvorlagen-und-variablen.tag-style">3.2.4. Anfang und Ende der Tags verändern</a></span></dt><dt><span class="sect2"><a href="ch03s02.html#dokumentenvorlagen-und-variablen.zuordnung-dateinamen">3.2.5. Zuordnung von den Dateinamen zu den Funktionen</a></span></dt><dt><span class="sect2"><a href="ch03s02.html#dokumentenvorlagen-und-variablen.dateinamen-erweitert">3.2.6. Sprache, Drucker und E-Mail</a></span></dt><dt><span class="sect2"><a href="ch03s02.html#dokumentenvorlagen-und-variablen.allgemeine-variablen">3.2.7. Allgemeine Variablen, die in allen Vorlagen vorhanden
+        sind</a></span></dt><dt><span class="sect2"><a href="ch03s02.html#dokumentenvorlagen-und-variablen.invoice">3.2.8. Variablen in Rechnungen</a></span></dt><dt><span class="sect2"><a href="ch03s02.html#dokumentenvorlagen-und-variablen.dunning">3.2.9. Variablen in Mahnungen und Rechnungen über Mahngebühren</a></span></dt><dt><span class="sect2"><a href="ch03s02.html#dokumentenvorlagen-und-variablen.andere-vorlagen">3.2.10. Variablen in anderen Vorlagen</a></span></dt><dt><span class="sect2"><a href="ch03s02.html#dokumentenvorlagen-und-variablen.bloecke">3.2.11. Blöcke, bedingte Anweisungen und Schleifen</a></span></dt><dt><span class="sect2"><a href="ch03s02.html#dokumentenvorlagen-und-variablen.markup">3.2.12. Markup-Code zur Textformatierung innerhalb von
+        Formularen</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch03s03.html">3.3. Excel-Vorlagen</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch03s03.html#excel-templates.summary">3.3.1. Zusammenfassung</a></span></dt><dt><span class="sect2"><a href="ch03s03.html#excel-templates.usage">3.3.2. Bedienung</a></span></dt><dt><span class="sect2"><a href="ch03s03.html#excel-templates.syntax">3.3.3. Variablensyntax</a></span></dt><dt><span class="sect2"><a href="ch03s03.html#excel-templates.limitations">3.3.4. Einschränkungen</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#d0e4249">4.1.1. Wie sehen globale Variablen in Perl aus?</a></span></dt><dt><span class="sect2"><a href="ch04.html#d0e4350">4.1.2. Warum sind globale Variablen ein Problem?</a></span></dt><dt><span class="sect2"><a href="ch04.html#d0e4383">4.1.3. Kanonische globale Variablen</a></span></dt><dt><span class="sect2"><a href="ch04.html#d0e4733">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><dt><span class="sect2"><a href="ch04s02.html#devel.fcgi.known-issues">4.2.5. Bekannte Probleme</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch04s03.html">4.3. SQL-Upgradedateien</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch04s03.html#db-upgrade-files.introduction">4.3.1. Einführung</a></span></dt><dt><span class="sect2"><a href="ch04s03.html#db-upgrade-files.format">4.3.2. Format der Kontrollinformationen</a></span></dt><dt><span class="sect2"><a href="ch04s03.html#db-upgrade-files.dbupgrade-tool">4.3.3. Hilfsscript dbupgrade2_tool.pl</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch04s04.html">4.4. Translations and languages</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch04s04.html#translations-languages.introduction">4.4.1. Introduction</a></span></dt><dt><span class="sect2"><a href="ch04s04.html#translations-languages.file-structure">4.4.2. File structure</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch04s05.html">4.5. Stil-Richtlinien</a></span></dt><dt><span class="sect1"><a href="ch04s06.html">4.6. Dokumentation erstellen</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch04s06.html#devel.build-doc.introduction">4.6.1. Einführung</a></span></dt><dt><span class="sect2"><a href="ch04s06.html#devel.build-doc.required-software">4.6.2. Benötigte Software</a></span></dt><dt><span class="sect2"><a href="ch04s06.html#devel.build-doc.build">4.6.3. PDFs und HTML-Seiten erstellen</a></span></dt><dt><span class="sect2"><a href="ch04s06.html#devel.build-doc.repository">4.6.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>
\ No newline at end of file
diff --git a/doc/html/style.css b/doc/html/style.css
new file mode 100644 (file)
index 0000000..b001aba
--- /dev/null
@@ -0,0 +1,453 @@
+/* Basic Settings:                                                            */\r
+\r
+body {\r
+       background-color: White; /* black foreground */\r
+       color: Black; /* center the body content in browser window */\r
+       margin: auto; /* padding ("inner margin") leaves space between */\r
+       padding: 24px; /* set width according to browser window width */\r
+       width: auto; /* text alignment */\r
+       text-align: justify; /* text-align: left; */\r
+}\r
+\r
+/* para */\r
+p {\r
+  /* font size, line height, font */\r
+  /* list of fonts provides fallbacks if a font is not present */\r
+  font: 12px/18px Verdana, Arial, Helvetica, Sans-Serif;\r
+\r
+  /* margin (top - right - bottom - left) */\r
+  margin: 0 15px 6px 15px;\r
+}\r
+\r
+\r
+\r
+\r
+/* NEEDS TO BE CLEARED UP */\r
+\r
+\r
+p, td, li, dt, dd\r
+{\r
+  /* font size, line height, font */\r
+  /* list of fonts provides fallbacks if a font is not present */\r
+  font: 12px/18px Verdana, Arial, Helvetica, Sans-Serif;\r
+}\r
+\r
+\r
+\r
+/* set font for most elements                    */\r
+/* p: paragraphs (regular text, docbook <para>)  */\r
+/* (...) */\r
+/* body: anything else  */\r
+body, p, td, li, dt, dd,\r
+{\r
+/* set font size and line height                             */\r
+/* list of fonts provides fallbacks if a font is not present */\r
+font: 12px/18px Verdana, Arial, Helvetica, Sans-Serif;\r
+}\r
+\r
+/* images */\r
+/* docbook: <imageobject> */\r
+img {\r
+/* no margin */\r
+margin: 0;\r
+\r
+/* no padding ("inner margin") */\r
+padding: 0;\r
+\r
+/* no border */\r
+border: 0;\r
+}\r
+\r
+\r
+/* emphasized text, can occur in most places */\r
+/* docbook: <emphasis> */\r
+em {\r
+/* bold face, higher number is more bold */\r
+font-weight: 600;\r
+/* italic */\r
+font-style: italic;\r
+}\r
+\r
+\r
+/* sect(ion)1 title */\r
+h2 {\r
+       font-family: Georgia, Verdana, Arial, Helvetica, Sans-Serif; /* font size, relative to body font size */\r
+       font-size: 125%; /* bold face, higher number is more bold */\r
+       font-weight: 600; /* underlined text */\r
+       text-decoration: none; /* foreground color: dark blue */\r
+       color: Black; /* background color: gray */\r
+       background-color: Orange; /* margin settings are top - right - bottom - left (think clockwise) */\r
+       margin: 15px 0 15px 0; /* padding ("inner margin") settings are top - right - bottom - left */\r
+/* (think clockwise)                                                 */\r
+       padding: 8px 15px 8px 15px; \r
+       /* border: 1px solid #000; */\r
+}\r
+\r
+\r
+/* sect(ion)2 title */\r
+h3 {\r
+       font-family: Georgia, Verdana, Arial, Helvetica, Sans-Serif; /* font size, relative to body font size */\r
+       font-size: 110%; /* bold face, higher number is more bold */\r
+       font-weight: 600; /* underlined text */\r
+       text-decoration: none; /* foreground color: dark blue */\r
+       color: Black; /* background-color is a very light grey */\r
+       background-color: #fefefe; /* padding ("inner margin") settings are top - right - bottom - left */\r
+/* (think clockwise)                                                 */\r
+       padding: 0 0 0 15px;\r
+}\r
+\r
+\r
+/* sect(ion)3 title */\r
+h4 {\r
+       font-family: Georgia, Verdana, Arial, Helvetica, Sans-Serif; /* font size, relative to body font size */\r
+       font-size: 100%; /* bold face, higher number is more bold */\r
+       font-weight: 600; /* underlined text */\r
+       text-decoration: none; /* foreground color: dark blue */\r
+       color: Black; /* background-color is a very light grey */\r
+       background-color: #fefefe; /* padding ("inner margin") settings are top - right - bottom - left */\r
+/* (think clockwise)                                                 */\r
+       padding: 0 0 0 15px;\r
+}\r
+\r
+\r
+/* sect(ion)4 title */\r
+h5 {\r
+       font-family: Georgia, Verdana, Arial, Helvetica, Sans-Serif; /* font size, relative to body font size */\r
+       font-size: 100%; /* bold face, higher number is more bold */\r
+       font-weight: 300; /* not underlined */\r
+       text-decoration: none; /* foreground color: dark blue */\r
+       color: Black; /* background-color is a very light grey */\r
+       background-color: #fefefe; /* padding ("inner margin") settings are top - right - bottom - left */\r
+/* (think clockwise)                                                 */\r
+       padding: 0 0 0 15px;\r
+}\r
+\r
+/* the following formats refer to the docbook tags of the same name           */\r
+/* for more information, see the docbook reference at                         */\r
+/* http://www.docbook.org/tdg/en/html/docbook.html                            */\r
+\r
+.mediaobject\r
+{\r
+/* center */\r
+text-align: center;\r
+}\r
+\r
+\r
+/*  */\r
+.calloutlist, .figure, .table\r
+{\r
+/* margin settings are top - right - bottom - left (think clockwise) */\r
+margin: 15px 30px 15px 30px;\r
+}\r
+\r
+\r
+/*  */\r
+.itemizedlist, .variablelist {\r
+/* margin settings are top - right - bottom - left (think clockwise) */\r
+margin: 15px 30px 15px 15px;\r
+}\r
+\r
+/* blockquote formatting is a little more complex    */\r
+/* because block quotes are rendered as a html table */\r
+\r
+/* blockquote block */\r
+.blockquote\r
+{\r
+/* override bottom margin, the other margins are inherited */\r
+margin-bottom: 30px;\r
+}\r
+\r
+.blockquote p, .blockquote td\r
+{\r
+/* set font size and line height                             */\r
+/* list of fonts provides fallbacks if a font is not present */\r
+font: 12px/18px Verdana, Arial, Helvetica, Sans-Serif;\r
+\r
+/* bold face, higher number is more bold */\r
+font-weight: 450;\r
+}\r
+\r
+\r
+.epigraph\r
+{\r
+/* override bottom margin, the other margins are inherited */\r
+margin-bottom: 30px;\r
+}\r
+\r
+.epigraph p, .epigraph td\r
+{\r
+/* set font size and line height                             */\r
+/* list of fonts provides fallbacks if a font is not present */\r
+font: 10px/14px Verdana, Arial, Helvetica, Sans-Serif;\r
+\r
+/* bold face, higher number is more bold */\r
+font-weight: 600;\r
+}\r
+\r
+\r
+\r
+/* custom header and footer that are displayed on all pages */\r
+#customheader, #customfooter\r
+{\r
+/* list of fonts provides fallbacks if a font is not present */\r
+font-family: Verdana, Arial, Helvetica, Sans-Serif;\r
+\r
+/* font size, relative to body font size */\r
+font-size: 80%;\r
+\r
+/* line height, relative to body font size */\r
+line-height: 200%;\r
+\r
+\r
+text-align: center;\r
+vertical-align: middle;\r
+color: #fff;\r
+background-color: #009;\r
+}\r
+\r
+\r
+/* leave more space between last paragraph and footer  */\r
+/* some browser do not add up the bottom margin of the prior element */\r
+/* and the top margin of the footer */\r
+#customfooter {\r
+margin-top: 15px;\r
+}\r
+\r
+\r
+\r
+/* table { margin: 0 15px 6px 15px; } */\r
+\r
+\r
+/* title and navigation links in header and footer */\r
+.navheader th, .navheader td, .navfooter th, .navfooter td\r
+{\r
+font-size: 11px;\r
+font-weight: 450;\r
+}\r
+\r
+\r
+/* table of contents, list of figures and list of tables */\r
+.toc, .list-of-figures, .list-of-tables, .list-of-examples\r
+{\r
+/* margin settings are top - right - bottom - left (think clockwise) */\r
+margin: 15px 30px 15px 15px;\r
+}\r
+\r
+\r
+/* the "headings" are rendered as paragraphs */\r
+.toc p, .list-of-figures p, .list-of-tables p, .list-of-examples p\r
+{\r
+/* no margin */\r
+margin: 0;\r
+}\r
+\r
+\r
+.figure\r
+{\r
+/* margin settings are top - right - bottom - left (think clockwise) */\r
+margin: 5px 5px 5px 5px;\r
+\r
+/* no padding ("inner border") */\r
+padding: 0;\r
+\r
+/* no border */\r
+border: 0;\r
+\r
+/* center text */\r
+text-align: center;\r
+}\r
+\r
+\r
+/* figure title */\r
+.figure p, .table p, .example p\r
+{\r
+font-size: 80%;\r
+}\r
+\r
+\r
+/*\r
+acronym {\r
+      border-bottom: 1px dashed #00cc00;\r
+      cursor: help;\r
+}\r
+*/\r
+\r
+\r
+/* admonition headings */\r
+div.note, div.important, div.warning, div.caution, div.tip\r
+{\r
+padding: 0px 15px 0px 0px;\r
+}\r
+\r
+div.note th, div.important th, div.warning th, div.caution th, div.tip th\r
+{\r
+/* set font size and line height                             */\r
+/* list of fonts provides fallbacks if a font is not present */\r
+font: 12px/18px Verdana, Arial, Helvetica, Sans-Serif;\r
+\r
+font-weight: 600;\r
+\r
+text-decoration: underline;\r
+\r
+/* left align */\r
+text-align: left;\r
+}\r
+\r
+.note p, .important p, .warning p, .caution p, .tip p\r
+{\r
+margin: 0;\r
+}\r
+\r
+.note img, .important img, .warning img, .caution img, .tip img\r
+{\r
+margin: 0px 15px 0px 15px;\r
+}\r
+\r
+\r
+/* programlisting */\r
+pre.programlisting\r
+{\r
+/* non-proportional font */\r
+/* list of fonts provides fallbacks if a font is not present */\r
+font-family: "Courier New", Courier, Monospace;\r
+\r
+/* color: black */\r
+color: #000;\r
+\r
+/* background color: gray */\r
+background-color: #eee;\r
+\r
+/* no margin */\r
+margin: 0;\r
+\r
+/* gray dotted border, 1 px wide */\r
+border: 1px dotted #ddd;\r
+\r
+/* padding ("inner margin") settings are top - right - bottom - left */\r
+/* (think clockwise)                                                 */\r
+padding: 6px 6px 6px 6px;\r
+}\r
+\r
+\r
+/* title page */\r
+\r
+\r
+/* heading1 is used for document title */\r
+h1\r
+{\r
+       font-family: Georgia,Verdana, Arial, Helvetica, Sans-Serif; /* font size, relative to body font size */\r
+       font-size: 150%; /* bold face, higher number is more bold */\r
+       font-weight: 600; /* line height, relative to body line height */\r
+       line-height: 250%; /* center */\r
+       text-align: center; /* foreground color: dark blue */\r
+       color: Black; /* background color: gray */\r
+       background-color: Orange; /* margin settings are top - right - bottom - left (think clockwise) */\r
+       margin: 15px 0 15px 0; /* no padding ("inner margin") */\r
+       padding: 15;\r
+       border: 1px solid #000; \r
+}\r
+\r
+\r
+\r
+/* author on title page is formatted as h3          */\r
+/* these settings overwrite the regular h3 settings */\r
+h3.author {\r
+/* set font size and line height                             */\r
+/* list of fonts provides fallbacks in case selected fonts are not present */\r
+font: 12px/18px Verdana, Arial, Helvetica, Sans-Serif;\r
+\r
+/* bold face, higher number is more bold */\r
+font-weight: 600;\r
+\r
+/* do not underline */\r
+text-decoration: none;\r
+\r
+/* center text */\r
+text-align: center;\r
+\r
+/* color: black */\r
+color: #000;\r
+\r
+/* background-color is a very light grey */\r
+/* alternative: #fff = white             */\r
+background-color: #fefefe;\r
+\r
+/* margin settings are top - right - bottom - left (think clockwise) */\r
+margin: 0 15px 15px 15px;\r
+\r
+/* no padding */\r
+padding: 0;\r
+\r
+/* no border */\r
+border: 0;\r
+}\r
+\r
+\r
+/* copyright and date */\r
+.copyright, .pubdate\r
+{\r
+/* list of fonts provides fallbacks if a font is not present */\r
+font-family: Verdana, Arial, Helvetica, Sans-Serif;\r
+\r
+/* font size, relative to body font size */\r
+font-size: 90%;\r
+\r
+/* center */\r
+text-align: center;\r
+\r
+/* margin settings are top - right - bottom - left (think clockwise) */\r
+margin: 15px 15px 15px 15px;\r
+\r
+/* no padding ("inner margin") */\r
+padding: 0;\r
+\r
+/* no border */\r
+border: 0;\r
+}\r
+\r
+\r
+/* legal notice box */\r
+div.legalnotice\r
+{\r
+       font-family: Verdana, Arial, Helvetica, Sans-Serif; /* font size, relative to body font size */\r
+       font-size: 90%; /* color: black */\r
+       color: #000; /* background color: gray */\r
+       background-color: Orange; /* margin settings are top - right - bottom - left (think clockwise) */\r
+       margin: 10px 45px 10px 45px; /* padding ("inner margin") settings are top - right - bottom - left */\r
+       padding: 5px 5px 5px 5px; /* solid black border, 1px wide */\r
+       border: 1px solid #000;\r
+}\r
+\r
+\r
+table {\r
+       /* border: thin solid orange; */\r
+       border-spacing: 0pt;\r
+       margin-top: 5;\r
+       margin-bottom: 5;\r
+}\r
+\r
+td {\r
+       font-family: SansSerif, Arial, Helvetica, sans-serif;\r
+    padding-left: 1;\r
+    padding-right: 1;\r
+    padding-top: 1;\r
+    padding-bottom: 1  \r
+}\r
+\r
+th {\r
+        /* border: thin solid orange; */        \r
+    padding-left: 1;\r
+    padding-right: 1;\r
+    padding-top: 1;\r
+    padding-bottom: 1  \r
+}\r
+\r
+.informaltable {\r
+   border-collapse: collapse;\r
+       table-layout: auto;\r
+}\r
+\r
+.revhistory {\r
+   border-collapse: collapse;\r
+       table-layout: auto;\r
+}
\ No newline at end of file
index 1e15d29..ce96ffe 100755 (executable)
@@ -11,6 +11,26 @@ if [[ ! -d doc ]]; then
   exit 1
 fi
 
+html=1
+pdf=1
+
+if [[ ! -z $1 ]] ; then
+  html=0
+  pdf=0
+  while [[ ! -z $1 ]] ; do
+    case $1 in
+      html) html=1 ;;
+      pdf)  pdf=1  ;;
+      *)
+        echo "Unknown parameter $1"
+        exit 1
+        ;;
+    esac
+
+    shift
+  done
+fi
+
 dobudish=$(ls -d doc/build/dobudish* 2> /dev/null)
 
 if [[ -z $dobudish ]] || [[ ! -d ${dobudish} ]]; then
@@ -29,16 +49,21 @@ input=${base}/input
 output=${base}/output
 custom=${base}/custom-cfg
 
-rm -f ${input}/*.xml
-cp ../../dokumentation.xml ${input}/
+rm -rf ${input} ${custom}
+mkdir ${input} ${input}/copy_to_output ${custom}
 
-rm -f ${custom}/*
+cp ../../dokumentation.xml ${input}/
+cp -R ../../images ${input}/copy_to_output/
 cp -R ../custom-cfg/* ${custom}/
 
-./generator.sh dokumentation pdf
-cp ${output}/pdf/dokumentation.pdf ../../
+if [[ $pdf = 1 ]] ; then
+  ./generator.sh dokumentation pdf
+  cp ${output}/pdf/dokumentation.pdf ../../
+fi
 
-./generator.sh dokumentation html
-rm -rf ../../html
-mkdir ../../html
-cp -R ${output}/html ../../html
+if [[ $html = 1 ]]; then
+  ./generator.sh dokumentation html
+  rm -rf ../../html
+  mkdir ../../html
+  cp -R ${output}/html ../../
+fi