<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
-<book id="ding.xml" lang="de">
+<book id="lx-office-documentation" lang="de">
<title>Lx-Office: Installation, Konfiguration, Entwicklung</title>
<chapter id="Aktuelle-Hinweise">
ohne große Probleme auf den derzeit aktuellen verbreiteten
Distributionen läuft.</para>
- <para>Anfang 2012 sind das folgende Systeme, von denen bekannt ist, dass Lx-Office auf ihnen läuft:</para>
+ <para>Anfang 2012 sind das folgende Systeme, von denen bekannt ist,
+ dass Lx-Office auf ihnen läuft:</para>
<itemizedlist>
<listitem>
- <para>Ubuntu 8.04 LTS Hardy Heron, 10.04 LTS Lucid Lynx bis 11.10 Oneiric Ocelot</para>
+ <para>Ubuntu 8.04 LTS Hardy Heron, 10.04 LTS Lucid Lynx bis 11.10
+ Oneiric Ocelot</para>
</listitem>
<listitem>
<para>Alternativ dazu kann die normale Installation durchgeführt
werden (siehe <xref
- linkend="Manuelle-Installation-des-Programmpaketes"/>), wenn vorher
+ linkend="Manuelle-Installation-des-Programmpaketes" />), wenn vorher
ein Kompatibilitätspaket installiert wird, das die fehlenden Pakete
bereitstellt. Das Paket ist auf <ulink
- url="https://sourceforge.net/projects/lx-office/files/Lx-Office%20ERP/2.6.2/">Sourceforge</ulink>
+ url="https://sourceforge.net/projects/lx-office/files/Lx-Office%20ERP/2.6.3/">Sourceforge</ulink>
unter dem Namen <filename>lx-erp-perl-libs-compat-v2.tar.gz</filename>
hinterlegt.</para>
<para>Zusätzlich müssen dann noch die folgenden Pakete installiert
weerden</para>
- <programlisting>apt-get install libbit-vector-perl libsub-exporter-perl libclone-perl libclass-factory-util-perl</programlisting>
+ <programlisting>apt-get install libbit-vector-perl libsub-exporter-perl libclone-perl \
+ libclass-factory-util-perl</programlisting>
<para>Danach sollte der Installationscheck (siehe <xref
- linkend="Pakete"/>) die enthaltenen Pakete erkennen.</para>
+ linkend="Pakete" />) die enthaltenen Pakete erkennen.</para>
</sect2>
<sect2 id="Pakete" xreflabel="Pakete">
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</programlisting>
+ libparams-validate-perl libjson-perl libclass-accessor-perl</programlisting>
<para>Für Fedora Core benötigen Sie diese Pakete:</para>
<filename>/var/www/</filename>) entpackt:</para>
<programlisting>cd /var/www tar xvzf
-lxoffice-erp-2.6.2.tgz</programlisting>
+lxoffice-erp-2.6.3.tgz</programlisting>
- <para>Verändern Sie evtl. noch den Namen des Verzeichnisses mit</para>
+ <para>Verändern Sie evtl. noch den Namen des Verzeichnisses und wechseln Sie in es:</para>
- <programlisting>mv lxoffice-erp/ lx-erp/</programlisting>
+ <programlisting>mv lxoffice-erp/ lx-erp/
+cd lx-erp</programlisting>
<para>Alternativ können Sie auch einen Alias in der
Webserverkonfiguration benutzen, um auf das tatsächliche
Installationsverzeichnis zu verweisen.</para>
- <para>Die Verzeichnisse <filename>users</filename>,
- <filename>spool</filename> und <filename>webdav</filename> 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 <constant>www-data</constant>, bei Fedora core
- <constant>apache</constant> oder bei OpenSuSE
- <constant>wwwrun</constant>).</para>
+ <para>Die Verzeichnisse <filename>users</filename>, <filename>spool</filename> und <filename>webdav</filename> 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. Die Benutzer- und
+ Gruppennamen sind bei verschiedenen Distributionen unterschiedlich (z.B. bei Debian/Ubuntu <constant>www-data</constant>, bei Fedora
+ core <constant>apache</constant> oder bei OpenSuSE <constant>wwwrun</constant>).</para>
<para>Der folgende Befehl ändert den Besitzer für die oben genannten
Verzeichnisse auf einem Debian/Ubuntu-System:</para>
- <programlisting>chown -R www-data lx-office-erp/users lx-office-erp/spool lx-office-erp/webdav</programlisting>
+ <programlisting>chown -R www-data users spool webdav</programlisting>
- <para>Weiterhin muss der Webserver-Benutzer im Verzeichnis
- <filename>templates</filename> Verzeichnisse für jeden neuen Benutzer,
- der in lx-office angelegt wird, anlegen dürfen:</para>
+ <para>Weiterhin muss der Webserver-Benutzer in den Verzeichnissen <filename>templates</filename> und <filename>users</filename>
+ Unterverzeichnisse für jeden neuen Benutzer anlegen dürfen, der in Lx-Office angelegt wird:</para>
- <programlisting>chgrp www-data lx-office-erp/templates
-chmod g+w lx-office-erp/templates</programlisting>
+ <programlisting>chown www-data templates users</programlisting>
</sect1>
<sect1 id="config.config-file">
- <title>Lx-Office-Konfigurationsdatei</title>
+ <title>Lx-Office-Konfigurationsdatei</title>
- <sect2 id="config.config-file.introduction" xreflabel="Einführung in die Konfigurationsdatei">
- <title>Einführung</title>
+ <sect2 id="config.config-file.introduction"
+ xreflabel="Einführung in die Konfigurationsdatei">
+ <title>Einführung</title>
- <para>
- Seit Lx-Office 2.6.3. gibt es nur noch eine Konfigurationsdatei die benötigt wird: <filename>config/lx_office.conf</filename> (kurz:
- "die Hauptkonfigurationsdatei"). Diese muss bei der Erstinstallation von Lx-Office bzw. der Migration von älteren Versionen angelegt
- werden.
- </para>
+ <para>Seit Lx-Office 2.6.3. gibt es nur noch eine Konfigurationsdatei
+ die benötigt wird: <filename>config/lx_office.conf</filename> (kurz:
+ "die Hauptkonfigurationsdatei"). Diese muss bei der Erstinstallation
+ von Lx-Office bzw. der Migration von älteren Versionen angelegt
+ werden.</para>
- <para>
- Als Vorlage dient die Datei <filename>config/lx_office.conf.default</filename> (kurz: "die Default-Datei"):
- </para>
+ <para>Als Vorlage dient die Datei
+ <filename>config/lx_office.conf.default</filename> (kurz: "die
+ Default-Datei"):</para>
- <programlisting>$ cp config/lx_office.conf.default config/lx_office.conf</programlisting>
+ <programlisting>$ cp config/lx_office.conf.default config/lx_office.conf</programlisting>
- <para>
- 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.
- </para>
+ <para>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
+ Abschnitte und Werte enthalten, die von denen der Default-Datei
+ abweichen.</para>
- <para>
- Diese Hauptkonfigurationsdatei ist dann eine installationsspezifische Datei, d.h. sie enthält bspw. lokale Passwörter und wird auch
- nicht im Versionsmanagement (git) verwaltet.
- </para>
+ <para>Diese Hauptkonfigurationsdatei ist dann eine
+ installationsspezifische Datei, d.h. sie enthält bspw. lokale
+ Passwörter und wird auch nicht im Versionsmanagement (git)
+ verwaltet.</para>
- <para>
- Die Konfiguration ist ferner serverabhängig, d.h. für alle Mandaten, bzw. Datenbanken gleich.
- </para>
- </sect2>
+ <para>Die Konfiguration ist ferner serverabhängig, d.h. für alle
+ Mandaten, bzw. Datenbanken gleich.</para>
+ </sect2>
- <sect2 id="config.config-file.sections-parameters">
- <title>Abschnitte und Parameter</title>
+ <sect2 id="config.config-file.sections-parameters">
+ <title>Abschnitte und Parameter</title>
- <para>
- Die Konfigurationsdatei besteht aus mehreren Teilen, die entsprechend kommentiert sind:
- </para>
+ <para>Die Konfigurationsdatei besteht aus mehreren Teilen, die
+ entsprechend kommentiert sind:</para>
- <itemizedlist>
- <listitem><para><literal>authentication</literal></para></listitem>
- <listitem><para><literal>authentication/database</literal></para></listitem>
- <listitem><para><literal>authentication/ldap</literal></para></listitem>
- <listitem><para><literal>system</literal></para></listitem>
- <listitem><para><literal>features</literal></para></listitem>
- <listitem><para><literal>paths</literal></para></listitem>
- <listitem><para><literal>applications</literal></para></listitem>
- <listitem><para><literal>environment</literal></para></listitem>
- <listitem><para><literal>print_templates</literal></para></listitem>
- <listitem><para><literal>task_server</literal></para></listitem>
- <listitem><para><literal>periodic_invoices</literal></para></listitem>
- <listitem><para><literal>console</literal></para></listitem>
- <listitem><para><literal>debug</literal></para></listitem>
- </itemizedlist>
+ <itemizedlist>
+ <listitem>
+ <para><literal>authentication</literal></para>
+ </listitem>
+
+ <listitem>
+ <para><literal>authentication/database</literal></para>
+ </listitem>
+
+ <listitem>
+ <para><literal>authentication/ldap</literal></para>
+ </listitem>
+
+ <listitem>
+ <para><literal>system</literal></para>
+ </listitem>
+
+ <listitem>
+ <para><literal>features</literal></para>
+ </listitem>
+
+ <listitem>
+ <para><literal>paths</literal></para>
+ </listitem>
+
+ <listitem>
+ <para><literal>applications</literal></para>
+ </listitem>
+
+ <listitem>
+ <para><literal>environment</literal></para>
+ </listitem>
- <para>
- Die üblicherweise wichtigsten Parameter, die am Anfang einzustellen oder zu kontrollieren sind, sind:
- </para>
+ <listitem>
+ <para><literal>print_templates</literal></para>
+ </listitem>
+
+ <listitem>
+ <para><literal>task_server</literal></para>
+ </listitem>
+
+ <listitem>
+ <para><literal>periodic_invoices</literal></para>
+ </listitem>
+
+ <listitem>
+ <para><literal>console</literal></para>
+ </listitem>
+
+ <listitem>
+ <para><literal>debug</literal></para>
+ </listitem>
+ </itemizedlist>
- <programlisting>[authentication]
+ <para>Die üblicherweise wichtigsten Parameter, die am Anfang
+ einzustellen oder zu kontrollieren sind, sind:</para>
+
+ <programlisting>[authentication]
admin_password = geheim
[authentication/database]
password =
[system]
-eur = 1
dbcharset = UTF-8</programlisting>
- <para>
- Nutzt man wiederkehrende Rechnungen, kann man unter <varname>[periodic_invoices]</varname> den Login eines Benutzers angeben, der
- nach Erstellung der Rechnungen eine entsprechende E-Mail mit Informationen über die erstellten Rechnungen bekommt.
- </para>
-
- <para>
- Nutzt man den <link linkend="config.task-server">Taskserver</link> für <link
- linkend="features.periodic-invoices">wiederkehrende Rechnungen</link>, muss unter <varname>[task_server]</varname> ein Login eines
- Benutzers angegeben werden, mit dem sich der Taskserver an Lx-Office bei der Datenbank anmeldet, die dem Benutzer zugewiesen ist.
- </para>
-
- <para>
- Für Entwickler finden sich unter <varname>[debug]</varname> wichtige Funktionen, um die Fehlersuche zu erleichtern.
- </para>
- </sect2>
-
- <sect2 id="config.config-file.prior-versions">
- <title>Versionen vor 2.6.3</title>
-
- <para>
- In älteren Lx-Office Versionen gab es im Verzeichnis <filename>config</filename> die Dateien <filename>authentication.pl</filename>
- und <filename>lx-erp.conf</filename>, die jeweils Perl-Dateien waren. Es gab auch die Möglichkeit, eine lokale Version der
- Konfigurationsdatei zu erstellen (<filename>lx-erp-local.conf</filename>). Dies ist ab 2.6.3 nicht mehr möglich, aber auch nicht mehr
- nötig.
- </para>
-
- <para>
- 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.
- </para>
- </sect2>
+ <para>Nutzt man wiederkehrende Rechnungen, kann man unter
+ <varname>[periodic_invoices]</varname> den Login eines Benutzers
+ angeben, der nach Erstellung der Rechnungen eine entsprechende E-Mail
+ mit Informationen über die erstellten Rechnungen bekommt.</para>
+
+ <para>Nutzt man den <link
+ linkend="config.task-server">Taskserver</link> für <link
+ linkend="features.periodic-invoices">wiederkehrende Rechnungen</link>,
+ muss unter <varname>[task_server]</varname> ein Login eines Benutzers
+ angegeben werden, mit dem sich der Taskserver an Lx-Office bei der
+ Datenbank anmeldet, die dem Benutzer zugewiesen ist.</para>
+
+ <para>Für Entwickler finden sich unter <varname>[debug]</varname>
+ wichtige Funktionen, um die Fehlersuche zu erleichtern.</para>
+ </sect2>
+
+ <sect2 id="config.config-file.prior-versions">
+ <title>Versionen vor 2.6.3</title>
+
+ <para>In älteren Lx-Office Versionen gab es im Verzeichnis
+ <filename>config</filename> die Dateien
+ <filename>authentication.pl</filename> und
+ <filename>lx-erp.conf</filename>, die jeweils Perl-Dateien waren. Es
+ gab auch die Möglichkeit, eine lokale Version der Konfigurationsdatei
+ zu erstellen (<filename>lx-erp-local.conf</filename>). Dies ist ab
+ 2.6.3 nicht mehr möglich, aber auch nicht mehr nötig.</para>
+
+ <para>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.</para>
+ </sect2>
</sect1>
<sect1 id="Anpassung-der-PostgreSQL-Konfiguration">
PostgreSQL-Datenbankcluster muss ebenfalls mit UTF-8 als Locale
angelegt worden sein.</para>
- <para>Dieses ist kann überprüft werden: ist das Encoding der Datenbank “template1” “UTF8”, 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:</para>
+ <para>Dieses ist kann überprüft werden: ist das Encoding der Datenbank
+ “template1” “UTF8”, 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:</para>
<programlisting>pg_createcluster --locale=de_DE.UTF-8 --encoding=UTF-8 8.2 clustername</programlisting>
- <para>Die Datenbankversionsnummer muss an die tatsächlich verwendete Versionsnummer angepasst werden.</para>
+ <para>Die Datenbankversionsnummer muss an die tatsächlich verwendete
+ Versionsnummer angepasst werden.</para>
<para>Unter anderen Distributionen gibt es ähnliche Methoden.</para>
ist ein Neuanlegen eines weiteren Clusters nicht möglich, so kann
Lx-Office mit ISO-8859-15 als Encoding betrieben werden.</para>
- <para>Das Encoding einer Datenbank kann in <command>psql</command> mit <literal>\l</literal> geprüft werden.</para>
+ <para>Das Encoding einer Datenbank kann in <command>psql</command> mit
+ <literal>\l</literal> geprüft werden.</para>
</sect2>
<sect2 id="Änderungen-an-Konfigurationsdateien">
<para>In der Datei <filename>postgresql.conf</filename>, die je nach
Distribution in verschiedenen Verzeichnissen liegen kann (z.B.
<filename>/var/lib/pgsql/data/</filename> oder
- <filename>/etc/postgresql/</filename>, muss sichergestellt werden, dass
- TCP/IP-Verbindungen aktiviert sind. Das Verhalten wird über den
+ <filename>/etc/postgresql/</filename>, muss sichergestellt werden,
+ dass TCP/IP-Verbindungen aktiviert sind. Das Verhalten wird über den
Parameter <varname>listen_address</varname> gesteuert. Laufen
PostgreSQL und Lx-Office auf demselben Rechner, so kann dort der Wert
<literal>localhost</literal> verwendet werden. Andernfalls müssen
was mit dem Wert <literal>*</literal> geschieht.</para>
<para>In der Datei <filename>pg_hba.conf</filename>, die im gleichen
- Verzeichnis wie die <filename>postgresql.conf</filename> 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
+ Verzeichnis wie die <filename>postgresql.conf</filename> 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:</para>
<programlisting>local all all trust
<note>
<para>Für einen deutlichen Performanceschub sorgt die Ausführung
mittels FastCGI/FCGI. Die Einrichtung wird ausführlich im Abschnitt
- <xref linkend="Apache-Konfiguration.FCGI"/> beschrieben.</para>
+ <xref linkend="Apache-Konfiguration.FCGI" /> beschrieben.</para>
</note>
<para>Der Zugriff auf das Programmverzeichnis muss in der Apache
Alias /lx-erp/ /var/www/lx-erp/
<Directory /var/www/lx-erp>
- Options ExecCGI
- Includes FollowSymlinks
+ Options ExecCGI Includes FollowSymlinks
</Directory>
<Directory /var/www/lx-erp/users>
das Lx-Office-Archiv entpacket haben.</para>
<note>
- <para>Vor den einzelnen Optionen muss bei einigen Distributionen ein Plus ‘<literal>+</literal>’ gesetzt werden.</para>
+ <para>Vor den einzelnen Optionen muss bei einigen Distributionen ein
+ Plus ‘<literal>+</literal>’ gesetzt werden.</para>
</note>
<para>Auf einigen Webservern werden manchmal die Grafiken und
verwendet.</para>
<warning>
- <para>
- 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.
- </para>
+ <para>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.</para>
- <para>
- Mit CPAN lässt sie sich die Vorgängerversion wie folgt installieren:
- </para>
+ <para>Mit CPAN lässt sie sich die Vorgängerversion wie folgt
+ installieren:</para>
<programlisting>force install M/MS/MSTROUT/FCGI-0.68.tar.gz</programlisting>
</warning>
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/</programlisting>
- <para>Dann ist unter <filename>/url/for/lx-office-erp/</filename> die normale Version erreichbar, und unter
- <constant>/url/for/lx-office-erp-fcgid/</constant> die FastCGI-Version.</para>
+ <para>Dann ist unter <filename>/url/for/lx-office-erp/</filename>
+ die normale Version erreichbar, und unter
+ <constant>/url/for/lx-office-erp-fcgid/</constant> die
+ FastCGI-Version.</para>
</sect3>
</sect2>
</sect1>
Optionen sind:</para>
<variablelist>
- <varlistentry>
- <term><varname>login</varname></term>
- <listitem>
- <para>
- 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.
- </para>
- </listitem>
- </varlistentry>
+ <varlistentry>
+ <term><varname>login</varname></term>
- <varlistentry>
- <term><varname>run_as</varname></term>
- <listitem>
- <para>
- Wird der Server vom Systembenutzer <literal>root</literal> gestartet, so wechselt er auf den mit <literal>run_as</literal>
- angegebenen Systembenutzer. Der Systembenutzer muss dieselben Lese- und Schreibrechte haben, wie auch der Webserverbenutzer
- (siehe see <xref linkend="Manuelle-Installation-des-Programmpaketes"/>). Daher ist es sinnvoll, hier denselben Systembenutzer
- einzutragen, unter dem auch der Webserver läuft.
- </para>
- </listitem>
- </varlistentry>
+ <listitem>
+ <para>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.</para>
+ </listitem>
+ </varlistentry>
- <varlistentry>
- <term><varname>debug</varname></term>
- <listitem>
- <para>
- Schaltet Debug-Informationen an und aus.
- </para>
- </listitem>
- </varlistentry>
+ <varlistentry>
+ <term><varname>run_as</varname></term>
+
+ <listitem>
+ <para>Wird der Server vom Systembenutzer <literal>root</literal>
+ gestartet, so wechselt er auf den mit <literal>run_as</literal>
+ angegebenen Systembenutzer. Der Systembenutzer muss dieselben
+ Lese- und Schreibrechte haben, wie auch der Webserverbenutzer
+ (siehe see <xref
+ linkend="Manuelle-Installation-des-Programmpaketes" />). Daher
+ ist es sinnvoll, hier denselben Systembenutzer einzutragen,
+ unter dem auch der Webserver läuft.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><varname>debug</varname></term>
+
+ <listitem>
+ <para>Schaltet Debug-Informationen an und aus.</para>
+ </listitem>
+ </varlistentry>
</variablelist>
</sect2>
</listitem>
</itemizedlist>
- <para>Danach kann der Task-Server mit dem folgenden Befehl gestartet werden: <command>/etc/init.d/lx-office-task-server
+ <para>Danach kann der Task-Server mit dem folgenden Befehl gestartet
+ werden: <command>/etc/init.d/lx-office-task-server
start</command></para>
</sect3>
Passen Sie in der kopierten Datei den Pfad zum Task-Server an (Zeile
<literal>exec ....</literal>).</para>
- <para>Danach kann der Task-Server mit dem folgenden Befehl gestartet werden: <command>service lx-office-task-server
+ <para>Danach kann der Task-Server mit dem folgenden Befehl gestartet
+ werden: <command>service lx-office-task-server
start</command></para>
</sect3>
</sect2>
<sect2 id="Administratorpasswort">
<title>Administratorpasswort</title>
- <para>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
- <varname>admin_password</varname> im Abschnitt <varname>[authentication]</varname>.</para>
+ <para>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 <varname>admin_password</varname> im
+ Abschnitt <varname>[authentication]</varname>.</para>
</sect2>
<sect2 id="Authentifizierungsdatenbank">
<title>Authentifizierungsdatenbank</title>
- <para>Die Verbindung zur Authentifizierungsdatenbank wird mit den Parametern in <varname>[authentication/database]</varname>
- konfiguriert. Hier sind die folgenden Parameter anzugeben:</para>
+ <para>Die Verbindung zur Authentifizierungsdatenbank wird mit den
+ Parametern in <varname>[authentication/database]</varname>
+ konfiguriert. Hier sind die folgenden Parameter anzugeben:</para>
<variablelist>
- <varlistentry>
- <term><literal>host</literal></term>
- <listitem>
- <para>Der Rechnername oder die IP-Adresse des Datenbankservers</para>
- </listitem>
- </varlistentry>
+ <varlistentry>
+ <term><literal>host</literal></term>
- <varlistentry>
- <term><literal>port</literal></term>
- <listitem>
- <para>Die Portnummer des Datenbankservers, meist 5432</para>
- </listitem>
- </varlistentry>
+ <listitem>
+ <para>Der Rechnername oder die IP-Adresse des
+ Datenbankservers</para>
+ </listitem>
+ </varlistentry>
- <varlistentry>
- <term><literal>db</literal></term>
- <listitem>
- <para>Der Name der Authentifizierungsdatenbank</para>
- </listitem>
- </varlistentry>
+ <varlistentry>
+ <term><literal>port</literal></term>
- <varlistentry>
- <term><literal>user</literal></term>
- <listitem>
- <para>Der Benutzername, mit dem sich Lx-Office beim Datenbankserver anmeldet (z.B. "<literal>postgres</literal>")</para>
- </listitem>
- </varlistentry>
+ <listitem>
+ <para>Die Portnummer des Datenbankservers, meist 5432</para>
+ </listitem>
+ </varlistentry>
- <varlistentry>
- <term><literal>password</literal></term>
- <listitem>
- <para>Das Passwort für den Datenbankbenutzer</para>
- </listitem>
- </varlistentry>
+ <varlistentry>
+ <term><literal>db</literal></term>
+
+ <listitem>
+ <para>Der Name der Authentifizierungsdatenbank</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><literal>user</literal></term>
+
+ <listitem>
+ <para>Der Benutzername, mit dem sich Lx-Office beim
+ Datenbankserver anmeldet (z.B.
+ "<literal>postgres</literal>")</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><literal>password</literal></term>
+
+ <listitem>
+ <para>Das Passwort für den Datenbankbenutzer</para>
+ </listitem>
+ </varlistentry>
</variablelist>
<para>Die Datenbank muss noch nicht existieren. Lx-Office kann sie
<sect2 id="Passwortüberprüfung">
<title>Passwortüberprüfung</title>
- <para>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 <varname>module</varname> im Abschnitt
+ <para>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 <varname>module</varname> im Abschnitt
<varname>[authentication]</varname>.</para>
- <para>Sollen die Benutzerpasswörter in der Authentifizierungsdatenbank gespeichert werden, so muss der Parameter
- <varname>module</varname> den Wert <literal>DB</literal> enthalten. In diesem Fall können sowohl der Administrator als auch die
- Benutzer selber ihre Psaswörter in Lx-Office ändern.</para>
+ <para>Sollen die Benutzerpasswörter in der Authentifizierungsdatenbank
+ gespeichert werden, so muss der Parameter <varname>module</varname>
+ den Wert <literal>DB</literal> enthalten. In diesem Fall können sowohl
+ der Administrator als auch die Benutzer selber ihre Psaswörter in
+ Lx-Office ändern.</para>
- <para>Soll hingegen ein externer LDAP- oder Active-Directory-Server benutzt werden, so muss der Parameter <varname>module</varname>
- auf <literal>LDAP</literal> gesetzt werden. In diesem Fall müssen zusätzliche Informationen über den LDAP-Server im Abschnitt
+ <para>Soll hingegen ein externer LDAP- oder Active-Directory-Server
+ benutzt werden, so muss der Parameter <varname>module</varname> auf
+ <literal>LDAP</literal> gesetzt werden. In diesem Fall müssen
+ zusätzliche Informationen über den LDAP-Server im Abschnitt
<literal>[authentication/ldap]</literal> angegeben werden:</para>
<variablelist>
- <varlistentry>
- <term><literal>host</literal></term>
- <listitem>
- <para>Der Rechnername oder die IP-Adresse des LDAP- oder Active-Directory-Servers. Diese Angabe ist zwingend
- erforderlich.</para>
- </listitem>
- </varlistentry>
+ <varlistentry>
+ <term><literal>host</literal></term>
- <varlistentry>
- <term><literal>port</literal></term>
- <listitem>
- <para>Die Portnummer des LDAP-Servers; meist 389.</para>
- </listitem>
- </varlistentry>
+ <listitem>
+ <para>Der Rechnername oder die IP-Adresse des LDAP- oder
+ Active-Directory-Servers. Diese Angabe ist zwingend
+ erforderlich.</para>
+ </listitem>
+ </varlistentry>
- <varlistentry>
- <term><literal>tls</literal></term>
- <listitem>
- <para>Wenn Verbindungsverschlüsselung gewünscht ist, so diesen Wert auf ‘<literal>1</literal>’ setzen, andernfalls auf
- ‘<literal>0</literal>’ belassen</para>
- </listitem>
- </varlistentry>
+ <varlistentry>
+ <term><literal>port</literal></term>
- <varlistentry>
- <term><literal>attribute</literal></term>
- <listitem>
- <para>Das LDAP-Attribut, in dem der Benutzername steht, den der Benutzer eingegeben hat. Für Active-Directory-Server ist dies
- meist ‘<literal>sAMAccountName</literal>’, für andere LDAP-Server hingegen ‘<literal>uid</literal>’. Diese Angabe ist zwingend
- erforderlich.</para>
- </listitem>
- </varlistentry>
+ <listitem>
+ <para>Die Portnummer des LDAP-Servers; meist 389.</para>
+ </listitem>
+ </varlistentry>
- <varlistentry>
- <term><literal>base_dn</literal></term>
- <listitem>
- <para>Der Abschnitt des LDAP-Baumes, der durchsucht werden soll. Diese Angabe ist zwingend erforderlich.</para>
- </listitem>
- </varlistentry>
+ <varlistentry>
+ <term><literal>tls</literal></term>
- <varlistentry>
- <term><literal>filter</literal></term>
- <listitem>
- <para>Ein optionaler LDAP-Filter. Enthält dieser Filter das Wort <literal><%login%></literal>, 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.</para>
- </listitem>
- </varlistentry>
+ <listitem>
+ <para>Wenn Verbindungsverschlüsselung gewünscht ist, so diesen
+ Wert auf ‘<literal>1</literal>’ setzen, andernfalls auf
+ ‘<literal>0</literal>’ belassen</para>
+ </listitem>
+ </varlistentry>
- <varlistentry>
- <term><literal>bind_dn</literal> und <literal>bind_password</literal></term>
- <listitem>
- <para>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 ‘<literal>bind_dn</literal>’ entweder eine
- komplette LDAP-DN wie z.B. ‘<literal>cn=Martin Mustermann,cn=Users,dc=firmendomain</literal>’ auch nur der volle Name des
- Benutzers eingegeben werden; in diesem Beispiel also ‘<literal>Martin Mustermann</literal>’.</para>
- </listitem>
- </varlistentry>
+ <varlistentry>
+ <term><literal>attribute</literal></term>
+
+ <listitem>
+ <para>Das LDAP-Attribut, in dem der Benutzername steht, den der
+ Benutzer eingegeben hat. Für Active-Directory-Server ist dies
+ meist ‘<literal>sAMAccountName</literal>’, für andere
+ LDAP-Server hingegen ‘<literal>uid</literal>’. Diese Angabe ist
+ zwingend erforderlich.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><literal>base_dn</literal></term>
+
+ <listitem>
+ <para>Der Abschnitt des LDAP-Baumes, der durchsucht werden soll.
+ Diese Angabe ist zwingend erforderlich.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><literal>filter</literal></term>
+
+ <listitem>
+ <para>Ein optionaler LDAP-Filter. Enthält dieser Filter das Wort
+ <literal><%login%></literal>, 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.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><literal>bind_dn</literal> und
+ <literal>bind_password</literal></term>
+
+ <listitem>
+ <para>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
+ ‘<literal>bind_dn</literal>’ entweder eine komplette LDAP-DN wie
+ z.B. ‘<literal>cn=Martin
+ Mustermann,cn=Users,dc=firmendomain</literal>’ auch nur der
+ volle Name des Benutzers eingegeben werden; in diesem Beispiel
+ also ‘<literal>Martin Mustermann</literal>’.</para>
+ </listitem>
+ </varlistentry>
</variablelist>
</sect2>
<sect2 id="Name-des-Session-Cookies">
<title>Name des Session-Cookies</title>
- <para>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 <varname>cookie_name</varname> im Abschnitt
+ <para>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 <varname>cookie_name</varname> im Abschnitt
<varname>[authentication]</varname>gesetzt.</para>
<para>Diese Angabe ist optional, wenn nur eine Installation auf dem
<sect2 id="Migration-alter-Installationen">
<title>Migration alter Installationen</title>
- <para>Wenn Lx-Office 2.6.2 über eine ältere Version installiert wird,
+ <para>Wenn Lx-Office 2.6.3 über eine ältere Version installiert wird,
in der die Benutzerdaten noch im Dateisystem im Verzeichnis
<literal>users</literal> verwaltet wurden, so bietet Lx-Office die
Möglichkeit, diese Benutzerdaten automatisch in die
<para>Dieses Verzeichnis, wie auch das komplette
<literal>users</literal>-Verzeichnis, muss vom Webserver beschreibbar
sein. Dieses wurde bereits erledigt (siehe <xref
- linkend="Manuelle-Installation-des-Programmpaketes"/>), kann aber erneut
- überprüft werden, wenn die Konvertierung nach PDF fehlschlägt.</para>
+ linkend="Manuelle-Installation-des-Programmpaketes" />), kann aber
+ erneut überprüft werden, wenn die Konvertierung nach PDF
+ fehlschlägt.</para>
</sect1>
<sect1 id="config.eur">
- <title>Konfiguration zur Einnahmenüberschussrechnung/Bilanzierung: EUR</title>
+ <title>Konfiguration zur Einnahmenüberschussrechnung/Bilanzierung:
+ EUR</title>
- <sect2 id="config.eur.introduction" xreflabel="Einführung in die Konfiguration zur EUR">
- <title>Einführung</title>
+ <sect2 id="config.eur.introduction"
+ xreflabel="Einführung in die Konfiguration zur EUR">
+ <title>Einführung</title>
- <para>
- Lx-Office besaß bis inklusive Version 2.6.3 einen Konfigurationsparameter namens <varname>eur</varname>, der sich in der
- Konfigurationsdatei <filename>config/lx_office.conf</filename> befindet. Somit galt er für alle Mandanten, die in dieser
- Installation benutzt wurden.
- </para>
+ <para>Lx-Office besaß bis inklusive Version 2.6.3 einen
+ Konfigurationsparameter namens <varname>eur</varname>, der sich in der
+ Konfigurationsdatei <filename>config/lx_office.conf</filename>
+ befindet. Somit galt er für alle Mandanten, die in dieser Installation
+ benutzt wurden.</para>
- <para>
- 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.
- </para>
+ <para>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.</para>
</sect2>
- <sect2 id="config.eur.parameters" xreflabel="Konfigurationsparameter für EUR">
- <title>Konfigurationsparameter</title>
-
- <para>
- Es gibt drei Parameter, die die Gewinnermittlungsart, Versteuerungsart und die Warenbuchungsmethode regeln:
- </para>
-
- <variablelist>
- <varlistentry>
- <term><varname>profit_determination</varname></term>
- <listitem>
- <para>
- Dieser Parameter legt die Berechnungsmethode für die Gewinnermittlung fest. Er enthält entweder <literal>balance</literal> für
- Betriebsvermögensvergleich/Bilanzierung oder <literal>income</literal> für die Einnahmen-Überschuss-Rechnung.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><varname>accounting_method</varname></term>
- <listitem>
- <para>
- Dieser Parameter steuert die Buchungs- und Berechnungsmethoden für die Versteuerungsart. Er enthält entweder
- <literal>accrual</literal> für die Soll-Versteuerung oder <literal>cash</literal> für die Ist-Versteuerung.
- </para>
- </listitem>
- </varlistentry>
-
- <varlistentry>
- <term><varname>inventory_system</varname></term>
- <listitem>
- <para>
- Dieser Parameter legt die Warenbuchungsmethode fest. Er enthält entweder <literal>perpetual</literal> für die Bestandsmethode
- oder <literal>periodic</literal> für die Aufwandsmethode.
- </para>
- </listitem>
- </varlistentry>
- </variablelist>
-
- <para>
- Zum Vergleich der Funktionalität bis und nach 2.6.3: <varname>eur</varname> = 1 bedeutete Einnahmen-Überschuss-Rechnung,
- Ist-Versteuerung und Aufwandsmethode. <varname>eur</varname> = 0 bedeutete hingegen Bilanzierung, Soll-Versteuerung und
- Bestandsmethode.
- </para>
-
- <para>
- Die Konfiguration "<varname>eur</varname>" unter <varname>[system]</varname> in der <link
- linkend="config.config-file">Konfigurationsdatei</link> <filename>config/lx_office.conf</filename> wird nun nicht mehr benötigt und
- kann entfernt werden. Dies muss manuell geschehen.
- </para>
+ <sect2 id="config.eur.parameters"
+ xreflabel="Konfigurationsparameter für EUR">
+ <title>Konfigurationsparameter</title>
+
+ <para>Es gibt drei Parameter, die die Gewinnermittlungsart,
+ Versteuerungsart und die Warenbuchungsmethode regeln:</para>
+
+ <variablelist>
+ <varlistentry>
+ <term><varname>profit_determination</varname></term>
+
+ <listitem>
+ <para>Dieser Parameter legt die Berechnungsmethode für die
+ Gewinnermittlung fest. Er enthält entweder
+ <literal>balance</literal> für
+ Betriebsvermögensvergleich/Bilanzierung oder
+ <literal>income</literal> für die
+ Einnahmen-Überschuss-Rechnung.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><varname>accounting_method</varname></term>
+
+ <listitem>
+ <para>Dieser Parameter steuert die Buchungs- und
+ Berechnungsmethoden für die Versteuerungsart. Er enthält
+ entweder <literal>accrual</literal> für die Soll-Versteuerung
+ oder <literal>cash</literal> für die Ist-Versteuerung.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term><varname>inventory_system</varname></term>
+
+ <listitem>
+ <para>Dieser Parameter legt die Warenbuchungsmethode fest. Er
+ enthält entweder <literal>perpetual</literal> für die
+ Bestandsmethode oder <literal>periodic</literal> für die
+ Aufwandsmethode.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ <para>Zum Vergleich der Funktionalität bis und nach 2.6.3:
+ <varname>eur</varname> = 1 bedeutete Einnahmen-Überschuss-Rechnung,
+ Ist-Versteuerung und Aufwandsmethode. <varname>eur</varname> = 0
+ bedeutete hingegen Bilanzierung, Soll-Versteuerung und
+ Bestandsmethode.</para>
+
+ <para>Die Konfiguration "<varname>eur</varname>" unter
+ <varname>[system]</varname> in der <link
+ linkend="config.config-file">Konfigurationsdatei</link>
+ <filename>config/lx_office.conf</filename> wird nun nicht mehr
+ benötigt und kann entfernt werden. Dies muss manuell geschehen.</para>
</sect2>
<sect2 id="config.eur.setting-parameters">
- <title>Festlegen der Parameter</title>
-
- <para>
- Beim Anlegen eines neuen Mandanten bzw. einer neuen Datenbank in der Admininstration können diese Optionen nun unabhängig
- voneinander eingestellt werden.
- </para>
-
- <para>
- Beim Upgrade bestehender Mandanten wird eur ausgelesen und die Variablen werden so gesetzt, daß sich an der Funktionalität nichts
- ändert.
- </para>
-
- <para>
- 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.
- </para>
+ <title>Festlegen der Parameter</title>
+
+ <para>Beim Anlegen eines neuen Mandanten bzw. einer neuen Datenbank in
+ der Admininstration können diese Optionen nun unabhängig voneinander
+ eingestellt werden.</para>
+
+ <para>Beim Upgrade bestehender Mandanten wird eur ausgelesen und die
+ Variablen werden so gesetzt, daß sich an der Funktionalität nichts
+ ändert.</para>
+
+ <para>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.</para>
</sect2>
<sect2 id="config.eur.inventory-system-perpetual">
- <title>Bemerkungen zu Bestandsmethode</title>
-
- <para>
- 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.
- </para>
-
- <para>
- 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.
- </para>
+ <title>Bemerkungen zu Bestandsmethode</title>
+
+ <para>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.</para>
+
+ <para>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.</para>
</sect2>
<sect2 id="config.eur.knonw-issues">
- <title>Bekannte Probleme</title>
+ <title>Bekannte Probleme</title>
- <para>
- 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 <varname>$::lx_office_conf{system}->{eur}</varname> ausgewertet wurde.
- </para>
+ <para>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
+ <varname>$::lx_office_conf{system}->{eur}</varname> ausgewertet
+ wurde.</para>
- <para>
- Es fehlen Hilfetext beim Neuanlegen eines Mandanten, was die Optionen bewirken, z.B. mit zwei Standardfällen.
- </para>
+ <para>Es fehlen Hilfetext beim Neuanlegen eines Mandanten, was die
+ Optionen bewirken, z.B. mit zwei Standardfällen.</para>
+ </sect2>
+ </sect1>
+
+ <sect1 id="config.skr04-update-3804">
+ <title>SKR04 19% Umstellung für innergemeinschaftlichen Erwerb</title>
+
+ <sect2 id="config.skr04-update-3804.introduction">
+ <title>Einführung</title>
+
+ <para>Die Umsatzsteuerumstellung auf 19% für SKR04 für die
+ Steuerschlüssel "EU ohne USt-ID Nummer" ist erst 2010 erfolgt.
+ Lx-Office beinhaltet ein Upgradeskript, das das Konto 3804 automatisch
+ erstellt und die Steuereinstellungen korrekt einstellt. Hat der
+ Benutzer aber schon selber das Konto 3804 angelegt, oder gab es schon
+ Buchungen im Zeitraum nach dem 01.01.2007 auf das Konto 3803, wird das
+ Upgradeskript vorsichtshalber nicht ausgeführt, da der Benutzer sich
+ vielleicht schon selbst geholfen hat und mit seinen Änderungen
+ zufrieden ist. Die korrekten Einstellungen kann man aber auch per Hand
+ ausführen. Nachfolgend werden die entsprechenden Schritte anhand von
+ Screenshots dargestellt.</para>
+
+ <para>Für den Fall, daß Buchungen mit der Steuerschlüssel "EU ohne
+ USt.-IdNr." nach dem 01.01.2007 erfolgt sind, ist davon auszugehen,
+ dass diese mit dem alten Umsatzsteuersatz von 16% gebucht worden sind,
+ und diese Buchungen sollten entsprechend kontrolliert werden.</para>
+ </sect2>
+
+ <sect2 id="config.skr04-update-3804.create-chart">
+ <title>Konto 3804 manuell anlegen</title>
+
+ <para>Die folgenden Schritte sind notwendig, um das Konto manuell
+ anzulegen und zu konfigurieren. Zuerst wird in
+ <guimenu>System</guimenu> ->
+ <guisubmenu>Kontenübersicht</guisubmenu> -> <guimenuitem>Konto
+ erfassen</guimenuitem> das Konto angelegt.</para>
+
+ <screenshot>
+ <screeninfo>Konto 3804 erfassen</screeninfo>
+
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/skr04-update-3804/konto3804.png" />
+ </imageobject>
+ </mediaobject>
+ </screenshot>
+
+ <para>
+ Als Zweites muss Steuergruppe 13 für Konto 3803 angepasst werden. Dazu unter <guimenu>System</guimenu> ->
+ <guisubmenu>Steuern</guisubmenu> -> <guimenuitem>Bearbeiten</guimenuitem> den Eintrag mit Steuerschlüssel 13 auswählen und ihn
+ wie im folgenden Screenshot angezeigt anpassen.
+ </para>
+
+ <screenshot>
+ <screeninfo>Steuerschlüssel 13 für 3803 (16%) anpassen</screeninfo>
+
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/skr04-update-3804/steuer3803.png" />
+ </imageobject>
+ </mediaobject>
+ </screenshot>
+
+ <para>
+ Als Drittes wird ein neuer Eintrag mit Steuerschlüssel 13 für Konto 3804 (19%) angelegt. Dazu unter <guimenu>System</guimenu> ->
+ <guisubmenu>Steuern</guisubmenu> -> <guimenuitem>Erfassen</guimenuitem> auswählen und die Werte aus dem Screenshot übernehmen.
+ </para>
+
+ <screenshot>
+ <screeninfo>Steuerschlüssel 13 für 3804 (19%) anlegen</screeninfo>
+
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/skr04-update-3804/steuer3804.png" />
+ </imageobject>
+ </mediaobject>
+ </screenshot>
+
+ <para>
+ Als Nächstes sind alle Konten anzupassen, die als Steuerautomatikkonto die 3803 haben, sodass sie ab dem 1.1.2007 auch
+ Steuerautomatik auf 3804 bekommen. Dies betrifft in der Standardkonfiguration die Konten 4315 und 4726. Als Beispiel für 4315
+ müssen Sie dazu unter <guimenu>System</guimenu> -> <guisubmenu>Kontenübersicht</guisubmenu> -> <guimenuitem>Konten
+ anzeigen</guimenuitem> das Konto 4315 anklicken und die Einstellungen wie im Screenshot gezeigt vornehmen.
+ </para>
+
+ <screenshot>
+ <screeninfo>Konto 4315 anpassen</screeninfo>
+
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/skr04-update-3804/konto4315.png" />
+ </imageobject>
+ </mediaobject>
+ </screenshot>
+
+ <para>
+ Als Letztes sollte die Steuerliste unter <guimenu>System</guimenu> -> <guisubmenu>Steuern</guisubmenu> ->
+ <guimenuitem>Bearbeiten</guimenuitem> kontrolliert werden. Zum Vergleich der Screenshot.
+ </para>
+
+ <screenshot>
+ <screeninfo>Steuerliste vergleichen</screeninfo>
+
+ <mediaobject>
+ <imageobject>
+ <imagedata fileref="images/skr04-update-3804/steuerliste.png" />
+ </imageobject>
+ </mediaobject>
+ </screenshot>
</sect2>
</sect1>
<chapter id="features" xreflabel="Features und Funktionen">
<title>Features und Funktionen</title>
- <sect1 id="features.periodic-invoices" xreflabel="Wiedekehrende Rechnungen">
- <title>Wiederkehrende Rechnungen</title>
+ <sect1 id="features.periodic-invoices"
+ xreflabel="Wiedekehrende Rechnungen">
+ <title>Wiederkehrende Rechnungen</title>
- <sect2 id="features.periodic-invoices.introduction" xreflabel="Einführung in wiederkehrende Rechnungen">
- <title>Einführung</title>
+ <sect2 id="features.periodic-invoices.introduction"
+ xreflabel="Einführung in wiederkehrende Rechnungen">
+ <title>Einführung</title>
- <para>
- 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.
- </para>
+ <para>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.</para>
+ </sect2>
- </sect2>
+ <sect2 id="features.periodic-invoices.configuration"
+ xreflabel="Konfiguration von wiederkehrenden Rechnungen">
+ <title>Konfiguration</title>
- <sect2 id="features.periodic-invoices.configuration" xreflabel="Konfiguration von wiederkehrenden Rechnungen">
- <title>Konfiguration</title>
+ <para>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.</para>
- <para>
- 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.
- </para>
+ <para>Folgende Parameter kann man konfigurieren:</para>
- <para>
- Folgende Parameter kann man konfigurieren:
- </para>
+ <variablelist>
+ <varlistentry>
+ <term>Status</term>
- <variablelist>
- <varlistentry>
- <term>Status</term>
- <listitem>
- <para>
- Bei aktiven Rechnungen wird automatisch eine Rechnung erstellt, wenn die Periodizität erreicht ist (z.B. Anfang eines neuen
- Monats).
- </para>
-
- <para>
- 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.
- </para>
-
- <para>
- Für gekündigte Aufträge werden nie mehr Rechnungen erstellt. Man kann sich diese Aufträge aber gesondert in den Berichten anzeigen
- lassen.
- </para>
- </listitem>
- </varlistentry>
+ <listitem>
+ <para>Bei aktiven Rechnungen wird automatisch eine Rechnung
+ erstellt, wenn die Periodizität erreicht ist (z.B. Anfang eines
+ neuen Monats).</para>
+
+ <para>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.</para>
+
+ <para>Für gekündigte Aufträge werden nie mehr Rechnungen
+ erstellt. Man kann sich diese Aufträge aber gesondert in den
+ Berichten anzeigen lassen.</para>
+ </listitem>
+ </varlistentry>
- <varlistentry>
- <term>Periodizität</term>
- <listitem>
- <para>
- 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.
- </para>
- </listitem>
- </varlistentry>
+ <varlistentry>
+ <term>Periodizität</term>
- <varlistentry>
- <term>Buchen auf</term>
- <listitem>
- <para>
- Das Forderungskonto, in der Regel "Forderungen aus Lieferungen und Leistungen". Das Gegenkonto ergibt sich aus den Buchungsgruppen
- der betreffenden Waren.
- </para>
- </listitem>
- </varlistentry>
+ <listitem>
+ <para>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.</para>
+ </listitem>
+ </varlistentry>
- <varlistentry>
- <term>Startdatum</term>
- <listitem>
- <para>
- ab welchem Datum auf Rechnungserstellung geprüft werden soll
- </para>
- </listitem>
- </varlistentry>
+ <varlistentry>
+ <term>Buchen auf</term>
- <varlistentry>
- <term>Enddatum</term>
- <listitem>
- <para>
- ab wann keine Rechnungen mehr erstellt werden sollen
- </para>
- </listitem>
- </varlistentry>
+ <listitem>
+ <para>Das Forderungskonto, in der Regel "Forderungen aus
+ Lieferungen und Leistungen". Das Gegenkonto ergibt sich aus den
+ Buchungsgruppen der betreffenden Waren.</para>
+ </listitem>
+ </varlistentry>
- <varlistentry>
- <term>Automatische Verlängerung um x Monate</term>
- <listitem>
- <para>
- 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.
- </para>
- </listitem>
- </varlistentry>
+ <varlistentry>
+ <term>Startdatum</term>
- <varlistentry>
- <term>Drucken</term>
- <listitem>
- <para>
- Sind Drucker konfiguriert, so kann man sich die erstellten Rechnungen auch gleich ausdrucken lassen.
- </para>
- </listitem>
- </varlistentry>
- </variablelist>
-
- <para>
- Nach Erstellung der Rechnungen kann eine E-Mail mit Informationen zu den erstellten Rechnungen verschickt werden. Konfiguriert wird
- dies in der <link linkend="config.config-file.sections-parameters">Konfigurationsdatei</link>
- <filename>config/lx_office.conf</filename> im Abschnitt <varname>[periodic_invoices]</varname>.
- </para>
- </sect2>
-
- <sect2 id="features.periodic-invoices.reports">
- <title>Auflisten</title>
-
- <para>
- Unter Verkauf->Berichte->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.
- </para>
- </sect2>
-
- <sect2 id="features.periodic-invoices.task-server">
- <title>Erzeugung der eigentlichen Rechnungen</title>
-
- <para>
- Die zeitliche und periodische Überprüfung, ob eine wiederkehrende Rechnung automatisch erstellt werden soll, geschieht durch den
- <link linkend="config.task-server">Taskserver</link>, einen externen Dienst, der automatisch beim Start des Servers gestartet
- werden sollte.
- </para>
- </sect2>
-
- <sect2 id="features.periodic-invoices.create-for-current-month">
- <title>Erste Rechnung für aktuellen Monat erstellen</title>
-
- <para>
- 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.
- </para>
- </sect2>
+ <listitem>
+ <para>ab welchem Datum auf Rechnungserstellung geprüft werden
+ soll</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>Enddatum</term>
+
+ <listitem>
+ <para>ab wann keine Rechnungen mehr erstellt werden
+ sollen</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>Automatische Verlängerung um x Monate</term>
+
+ <listitem>
+ <para>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.</para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>Drucken</term>
+
+ <listitem>
+ <para>Sind Drucker konfiguriert, so kann man sich die erstellten
+ Rechnungen auch gleich ausdrucken lassen.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+
+ <para>Nach Erstellung der Rechnungen kann eine E-Mail mit
+ Informationen zu den erstellten Rechnungen verschickt werden.
+ Konfiguriert wird dies in der <link
+ linkend="config.config-file.sections-parameters">Konfigurationsdatei</link>
+ <filename>config/lx_office.conf</filename> im Abschnitt
+ <varname>[periodic_invoices]</varname>.</para>
+ </sect2>
+
+ <sect2 id="features.periodic-invoices.reports">
+ <title>Auflisten</title>
+
+ <para>Unter Verkauf->Berichte->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.</para>
+ </sect2>
+
+ <sect2 id="features.periodic-invoices.task-server">
+ <title>Erzeugung der eigentlichen Rechnungen</title>
+
+ <para>Die zeitliche und periodische Überprüfung, ob eine
+ wiederkehrende Rechnung automatisch erstellt werden soll, geschieht
+ durch den <link linkend="config.task-server">Taskserver</link>, einen
+ externen Dienst, der automatisch beim Start des Servers gestartet
+ werden sollte.</para>
+ </sect2>
+
+ <sect2 id="features.periodic-invoices.create-for-current-month">
+ <title>Erste Rechnung für aktuellen Monat erstellen</title>
+
+ <para>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.</para>
+ </sect2>
</sect1>
<sect1 id="dokumentenvorlagen-und-variablen">
<function><%variablenname%></function> verwendet wird. Für
LaTeX- und HTML-Vorlagen kann man die Form dieser Tags auch verändern
(siehe <xref
- linkend="dokumentenvorlagen-und-variablen.tag-style"/>).</para>
+ linkend="dokumentenvorlagen-und-variablen.tag-style" />).</para>
<para>Früher wurde hier nur über LaTeX gesprochen. Inzwischen
unterstützt Lx-Office aber auch OpenDocument-Vorlagen. Sofern es nicht
<para>Die kurzen Varianten dieser Vorlagentitel müssen dann entweder
Standardwerte anzeigen, oder die angeforderten Werte selbst auswerten,
siehe dazu <xref
- linkend="dokumentenvorlagen-und-variablen.allgemeine-variablen.meta"/>.</para>
+ linkend="dokumentenvorlagen-und-variablen.allgemeine-variablen.meta" />.</para>
</sect2>
<sect2 id="dokumentenvorlagen-und-variablen.allgemeine-variablen">
<function>strict</function> werden alle Variablen die nicht explizit
mit <function>Package</function>, <function>my</function> oder
<function>our</function> angegeben werden als Tippfehler angemarkert,
- dies hat, seit der Einführung, u.a. schon so manche langwierige Bug-Suche verkürzt.
- Da globale Variablen aber implizit mit Package angegeben werden, werden
- die nicht geprüft, und somit kann sich schnell ein Tippfehler einschleichen.</para>
+ dies hat, seit der Einführung, u.a. schon so manche langwierige
+ Bug-Suche verkürzt. Da globale Variablen aber implizit mit Package
+ angegeben werden, werden die nicht geprüft, und somit kann sich
+ schnell ein Tippfehler einschleichen.</para>
</sect2>
<sect2>
<title>Kanonische globale Variablen</title>
<para>Um dieses Problem im Griff zu halten gibt es einige wenige
- globale Variablen, die kanonisch sind, d.h. sie haben bestimmte vorgegebenen Eigenschaften,
- und alles andere sollte anderweitig umhergereicht werden.</para>
+ globale Variablen, die kanonisch sind, d.h. sie haben bestimmte
+ vorgegebenen Eigenschaften, und alles andere sollte anderweitig
+ umhergereicht werden.</para>
<para>Diese Variablen sind im Moment die folgenden neun:</para>
</listitem>
</itemizedlist>
- <para>Damit diese nicht erneut als Müllhalde missbraucht werden, im Folgenden
- eine kurze Erläuterung der bestimmten vorgegebenen Eigenschaften (Konventionen):</para>
+ <para>Damit diese nicht erneut als Müllhalde missbraucht werden, im
+ Folgenden eine kurze Erläuterung der bestimmten vorgegebenen
+ Eigenschaften (Konventionen):</para>
<sect3>
<title>$::form</title>
Ledger</productname> als Gottobjekt für alles misbraucht. Sämtliche
alten Funktionen unter SL/ mutieren <varname>$::form</varname>, das
heißt, alles was einem lieb ist (alle Variablen die einem ans Herz
- gewachsen sind), sollte man vor einem Aufruf (!) von zum
- Beispiel <function>IS->retrieve_customer()</function> in
- Sicherheit bringen. </para>
+ gewachsen sind), sollte man vor einem Aufruf (!) von zum Beispiel
+ <function>IS->retrieve_customer()</function> in Sicherheit
+ bringen.</para>
- <para>
- Z.B. das vom Benutzer eingestellte Zahlenformat, bevor man Berechnung in einem
- bestimmten Format durchführt (SL/Form.pm Zeile 3552, Stand version 2.7beta), um
- dies hinterher wieder auf den richtigen Wert zu setzen:
- </para>
+ <para>Z.B. das vom Benutzer eingestellte Zahlenformat, bevor man
+ Berechnung in einem bestimmten Format durchführt (SL/Form.pm Zeile
+ 3552, Stand version 2.7beta), um dies hinterher wieder auf den
+ richtigen Wert zu setzen:</para>
<programlisting> my $saved_numberformat = $::myconfig{numberformat};
$::myconfig{numberformat} = $numberformat;
# (...) div Berechnungen
$::myconfig{numberformat} = $saved_numberformat;</programlisting>
- <para>
- Das Objekt der Klasse Form hat leider im Moment noch viele zentrale Funktionen die vom internen Zustand abhängen, deshalb bitte
- nie einfach zerstören oder überschreiben (zumindestens nicht kurz vor einem Release oder in Absprache über bspw. die devel-Liste
- ;-). Es geht ziemlich sicher etwas kaputt.
- </para>
-
- <para>
- <varname>$::form</varname> ist gleichzeitig der Standard Scope in den <productname>Template::Toolkit</productname> Templates
- außerhalb der Controller: der Ausdruck <function>[% var %]</function> greift auf <varname>$::form->{var}</varname> zu. Unter
- Controllern ist der Standard Scope anders, da lautet der Zugriff <function>[% FORM.var %]</function>. In Druckvorlagen sind
- normale Variablen ebenfall im <varname>$::form</varname> Scope, d.h. <function><%var%></function> zeigt auf
- <varname>$::form->{var}</varname>. Nochmal von der anderen Seite erläutert, innerhalb von (Web-)Templates sieht man häufiger
- solche Konstrukte:
- </para>
+ <para>Das Objekt der Klasse Form hat leider im Moment noch viele
+ zentrale Funktionen die vom internen Zustand abhängen, deshalb bitte
+ nie einfach zerstören oder überschreiben (zumindestens nicht kurz
+ vor einem Release oder in Absprache über bspw. die devel-Liste ;-).
+ Es geht ziemlich sicher etwas kaputt.</para>
+
+ <para><varname>$::form</varname> ist gleichzeitig der Standard Scope
+ in den <productname>Template::Toolkit</productname> Templates
+ außerhalb der Controller: der Ausdruck <function>[% var
+ %]</function> greift auf <varname>$::form->{var}</varname> zu.
+ Unter Controllern ist der Standard Scope anders, da lautet der
+ Zugriff <function>[% FORM.var %]</function>. In Druckvorlagen sind
+ normale Variablen ebenfall im <varname>$::form</varname> Scope, d.h.
+ <function><%var%></function> zeigt auf
+ <varname>$::form->{var}</varname>. Nochmal von der anderen Seite
+ erläutert, innerhalb von (Web-)Templates sieht man häufiger solche
+ Konstrukte:</para>
<programlisting>[%- IF business %]
# (... Zeig die Auswahlliste Kunden-/Lieferantentyp an)
[%- END %]</programlisting>
- <para>
- Entweder wird hier dann $::form->{business} ausgewertet oder aber der Funktion <function>$form->parse_html_template</function>
- wird explizit noch ein zusätzlicher Hash übergeben, der dann auch in den (Web-)Templates zu Verfügung steht, bspw. so:
- </para>
+ <para>Entweder wird hier dann $::form->{business} ausgewertet
+ oder aber der Funktion
+ <function>$form->parse_html_template</function> wird explizit
+ noch ein zusätzlicher Hash übergeben, der dann auch in den
+ (Web-)Templates zu Verfügung steht, bspw. so:</para>
<programlisting>$form->parse_html_template("is/form_header", \%TMPL_VAR);</programlisting>
- <para>
- Innerhalb von Schleifen wird <varname>$::form->{TEMPLATE_ARRAYS}{var}[$index]</varname> bevorzugt, wenn vorhanden. Ein
- Beispiel findet sich in SL/DO.pm, welches über alle Positionen eines Lieferscheins in Schleife läuft:
- </para>
+ <para>Innerhalb von Schleifen wird
+ <varname>$::form->{TEMPLATE_ARRAYS}{var}[$index]</varname>
+ bevorzugt, wenn vorhanden. Ein Beispiel findet sich in SL/DO.pm,
+ welches über alle Positionen eines Lieferscheins in Schleife
+ läuft:</para>
<programlisting>for $i (1 .. $form->{rowcount}) {
# ...
</listitem>
</itemizedlist>
- <para>
- <varname>%::myconfig</varname> ist im Moment der Ersatz für ein Userobjekt. Die meisten Funktionen, die etwas anhand des
- aktuellen Users entscheiden müssen, befragen <varname>%::myconfig</varname>. Innerhalb der Anwendungen sind dies überwiegend die
- Daten, die sich unter <guimenu>Programm</guimenu> -> <guimenuitem>Einstellungen</guimenuitem> befinden, bzw. die Informationen
- über den Benutzer die über die Administrator-Schnittstelle (admin.pl) eingegeben wurden.
- </para>
+ <para><varname>%::myconfig</varname> ist im Moment der Ersatz für
+ ein Userobjekt. Die meisten Funktionen, die etwas anhand des
+ aktuellen Users entscheiden müssen, befragen
+ <varname>%::myconfig</varname>. Innerhalb der Anwendungen sind dies
+ überwiegend die Daten, die sich unter <guimenu>Programm</guimenu>
+ -> <guimenuitem>Einstellungen</guimenuitem> befinden, bzw. die
+ Informationen über den Benutzer die über die
+ Administrator-Schnittstelle (admin.pl) eingegeben wurden.</para>
</sect3>
<sect3>
</listitem>
</itemizedlist>
- <para>
- <varname>$::lxdebug</varname> stellt Debuggingfunktionen bereit, wie "<function>enter_sub</function>" und
- "<function>leave_sub</function>", mit denen in den alten Modulen ein brauchbares Tracing gebaut ist,
- "<function>log_time</function>", mit der man die Wallclockzeit seit Requeststart loggen kann, sowie
- "<function>message</function>" und "<function>dump</function>" mit denen man flott Informationen ins Log
- (tmp/lx-office-debug.log) packen kann.
- </para>
+ <para><varname>$::lxdebug</varname> stellt Debuggingfunktionen
+ bereit, wie "<function>enter_sub</function>" und
+ "<function>leave_sub</function>", mit denen in den alten Modulen ein
+ brauchbares Tracing gebaut ist, "<function>log_time</function>", mit
+ der man die Wallclockzeit seit Requeststart loggen kann, sowie
+ "<function>message</function>" und "<function>dump</function>" mit
+ denen man flott Informationen ins Log (tmp/lx-office-debug.log)
+ packen kann.</para>
- <para>
- Beispielsweise so:
- </para>
+ <para>Beispielsweise so:</para>
<programlisting>$main::lxdebug->message(0, 'Meine Konfig:' . Dumper (%::myconfig));
$main::lxdebug->message(0, 'Wer bin ich? Kunde oder Lieferant:' . $form->{vc});</programlisting>
</itemizedlist>
<para>Globale Konfiguration. Configdateien werden zum Start gelesen
- und danach nicht mehr angefasst. Es ist derzeit nicht geplant, dass das
- Programm die Konfiguration ändern kann oder sollte.</para>
+ und danach nicht mehr angefasst. Es ist derzeit nicht geplant, dass
+ das Programm die Konfiguration ändern kann oder sollte.</para>
- <para>Beispielsweise ist über den Konfigurationseintrag [debug]
- die Debug- und Trace-Log-Datei wie folgt konfiguriert und verfügbar:</para>
+ <para>Beispielsweise ist über den Konfigurationseintrag [debug] die
+ Debug- und Trace-Log-Datei wie folgt konfiguriert und
+ verfügbar:</para>
<programlisting>[debug]
file = /tmp/lx-office-debug.log</programlisting>
<para>Funktioniert wie <varname>$::lx_office_conf</varname>,
speichert aber Daten die von der Instanz abhängig sind. Eine Instanz
- ist hier eine Mandantendatenbank.
- Beispielsweise überprüft
+ ist hier eine Mandantendatenbank. Beispielsweise überprüft
<programlisting>$::instance_conf->get_inventory_system eq 'perpetual'</programlisting>
ob die berüchtigte Bestandsmethode zur Anwendung kommt.</para>
</sect3>
<itemizedlist>
<listitem>
- <para>Kommt es vom User, und soll unverändert wieder an den User? Dann <varname>$::form</varname>, steht da eh schon</para>
+ <para>Kommt es vom User, und soll unverändert wieder an den
+ User? Dann <varname>$::form</varname>, steht da eh schon</para>
</listitem>
<listitem>
- <para>Sind es Daten aus der Datenbank, die nur bis zum Ende des Requests gebraucht werden? Dann
+ <para>Sind es Daten aus der Datenbank, die nur bis zum Ende des
+ Requests gebraucht werden? Dann
<varname>$::request</varname></para>
</listitem>
<listitem>
- <para>Muss ich von anderen Teilen des Programms lesend drauf zugreifen? Dann <varname>$::request</varname>, aber Zugriff über
+ <para>Muss ich von anderen Teilen des Programms lesend drauf
+ zugreifen? Dann <varname>$::request</varname>, aber Zugriff über
Wrappermethode</para>
</listitem>
</itemizedlist>
</sect1>
<sect1 id="db-upgrade-files" xreflabel="Datenbank-Upgradedateien">
- <title>SQL-Upgradedateien</title>
+ <title>SQL-Upgradedateien</title>
- <sect2 id="db-upgrade-files.introduction" xreflabel="Einführung in die Datenbank-Upgradedateien">
- <title>Einführung</title>
+ <sect2 id="db-upgrade-files.introduction"
+ xreflabel="Einführung in die Datenbank-Upgradedateien">
+ <title>Einführung</title>
- <para>
- 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.
- </para>
+ <para>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.</para>
+
+ <para>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.</para>
+
+ <para>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.</para>
+
+ <para>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.</para>
+ </sect2>
- <para>
- 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.
- </para>
+ <sect2 id="db-upgrade-files.format"
+ xreflabel="Format der Upgradedateien">
+ <title>Format der Kontrollinformationen</title>
- <para>
- 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.
- </para>
+ <para>Die Kontrollinformationen sollten sich am Anfang der jeweiligen
+ Upgradedatei befinden. Jede Zeile, die Kontrollinformationen enthält,
+ hat dabei das folgende Format:</para>
- <para>
- 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.
- </para>
- </sect2>
+ <para>Für SQL-Upgradedateien:</para>
- <sect2 id="db-upgrade-files.format" xreflabel="Format der Upgradedateien">
- <title>Format der Kontrollinformationen</title>
+ <programlisting>-- @key: value</programlisting>
- <para>
- Die Kontrollinformationen sollten sich am Anfang der jeweiligen Upgradedatei befinden. Jede Zeile, die Kontrollinformationen enthält,
- hat dabei das folgende Format:
- </para>
+ <para>Für Perl-Upgradedateien:</para>
- <para>
- Für SQL-Upgradedateien:
- </para>
+ <programlisting># @key: value</programlisting>
- <programlisting>-- @key: value</programlisting>
+ <para>Leerzeichen vor "<varname>value</varname>" werden
+ entfernt.</para>
- <para>
- Für Perl-Upgradedateien:
- </para>
+ <para>Die folgenden Schlüsselworte werden verarbeitet:</para>
- <programlisting># @key: value</programlisting>
+ <variablelist>
+ <varlistentry>
+ <term><varname>tag</varname></term>
- <para>
- Leerzeichen vor "<varname>value</varname>" werden entfernt.
- </para>
+ <listitem>
+ <para>Wird zwingend benötigt. Dies ist der "Name" des Upgrades.
+ Dieser "tag" kann von anderen Kontrolldateien in ihren
+ Abhängigkeiten verwendet werden (Schlüsselwort
+ "<varname>depends</varname>"). Der "tag" ist auch der Name, der
+ in der Datenbank eingetragen wird.</para>
+
+ <para>Normalerweise sollte die Kontrolldatei genau so heißen wie
+ der "tag", nur mit der Endung ".sql" bzw. "pl".</para>
+
+ <para>Ein Tag darf nur aus alphanumerischen Zeichen sowie den
+ Zeichen _ - ( ) bestehen. Insbesondere sind Leerzeichen nicht
+ erlaubt und sollten stattdessen mit Unterstrichen ersetzt
+ werden.</para>
+ </listitem>
+ </varlistentry>
- <para>
- Die folgenden Schlüsselworte werden verarbeitet:
- </para>
+ <varlistentry>
+ <term><varname>charset</varname></term>
- <variablelist>
- <varlistentry>
- <term><varname>tag</varname></term>
- <listitem>
- <para>
- Wird zwingend benötigt. Dies ist der "Name" des Upgrades. Dieser "tag" kann von anderen Kontrolldateien in ihren Abhängigkeiten
- verwendet werden (Schlüsselwort "<varname>depends</varname>"). Der "tag" ist auch der Name, der in der Datenbank eingetragen wird.
- </para>
-
- <para>
- Normalerweise sollte die Kontrolldatei genau so heißen wie der "tag", nur mit der Endung ".sql" bzw. "pl".
- </para>
-
- <para>
- Ein Tag darf nur aus alphanumerischen Zeichen sowie den Zeichen _ - ( ) bestehen. Insbesondere sind Leerzeichen nicht erlaubt und
- sollten stattdessen mit Unterstrichen ersetzt werden.
- </para>
- </listitem>
- </varlistentry>
+ <listitem>
+ <para>Empfohlen. Gibt den Zeichensatz an, in dem das Script
+ geschrieben wurde, z.B. "<literal>UTF-8</literal>". Aus
+ Kompatibilitätsgründen mit alten Upgrade-Scripten wird bei
+ Abwesenheit des Tags der Zeichensatz
+ "<literal>ISO-8859-15</literal>" angenommen.</para>
+ </listitem>
+ </varlistentry>
- <varlistentry>
- <term><varname>charset</varname></term>
- <listitem>
- <para>
- Empfohlen. Gibt den Zeichensatz an, in dem das Script geschrieben wurde, z.B. "<literal>UTF-8</literal>". Aus
- Kompatibilitätsgründen mit alten Upgrade-Scripten wird bei Abwesenheit des Tags der Zeichensatz "<literal>ISO-8859-15</literal>"
- angenommen.
- </para>
- </listitem>
- </varlistentry>
+ <varlistentry>
+ <term><varname>description</varname></term>
- <varlistentry>
- <term><varname>description</varname></term>
- <listitem>
- <para>
- 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.
- </para>
- </listitem>
- </varlistentry>
+ <listitem>
+ <para>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.</para>
+ </listitem>
+ </varlistentry>
- <varlistentry>
- <term><varname>depends</varname></term>
- <listitem>
- <para>
- 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.
- </para>
-
- <para>
- 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.
- </para>
-
- <para>
- Es ist nicht erlaubt, sich selbst referenzierende Abhängigkeiten zu definieren (z.B. "a" -> "b",
- "b" -> "c" und "c" -> "a").
- </para>
- </listitem>
- </varlistentry>
+ <varlistentry>
+ <term><varname>depends</varname></term>
- <varlistentry>
- <term><varname>priority</varname></term>
- <listitem>
- <para>
- 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.
- </para>
-
- <para>
- 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".
- </para>
- </listitem>
- </varlistentry>
- <varlistentry>
- <term><varname>ignore</varname></term>
- <listitem>
- <para>
- Optional. Falls der Wert auf 1 (true) steht, wird das Skript bei der Anmeldung ignoriert und entsprechend nicht ausgeführt.
- </para>
- </listitem>
- </varlistentry>
- </variablelist>
- </sect2>
+ <listitem>
+ <para>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.</para>
+
+ <para>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.</para>
+
+ <para>Es ist nicht erlaubt, sich selbst referenzierende
+ Abhängigkeiten zu definieren (z.B. "a" -> "b", "b" -> "c"
+ und "c" -> "a").</para>
+ </listitem>
+ </varlistentry>
- <sect2 id="db-upgrade-files.dbupgrade-tool" xreflabel="Hilfsscript dbupgrade2_tool.pl">
- <title>Hilfsscript dbupgrade2_tool.pl</title>
+ <varlistentry>
+ <term><varname>priority</varname></term>
- <para>
- Um die Arbeit mit den Abhängigkeiten etwas zu erleichtern, existiert ein Hilfsscript namens
- "<filename>scripts/dbupgrade2_tool.pl</filename>". Es muss aus dem Lx-Office-ERP-Basisverzeichnis heraus aufgerufen werden. Dieses
- Tool liest alle Datenbankupgradescripte aus dem Verzeichnis <filename>sql/Pg-upgrade2</filename> aus. Es benutzt dafür die gleichen
- Methoden wie Lx-Office selber, sodass alle Fehlersituationen von der Kommandozeile überprüft werden können.
- </para>
+ <listitem>
+ <para>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.</para>
+
+ <para>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".</para>
+ </listitem>
+ </varlistentry>
- <para>
- 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:
- </para>
+ <varlistentry>
+ <term><varname>ignore</varname></term>
- <itemizedlist>
- <listitem>
- <para>Listenform: "<command>./scripts/dbupgrade2_tool.pl --list</command>"</para>
+ <listitem>
+ <para>Optional. Falls der Wert auf 1 (true) steht, wird das
+ Skript bei der Anmeldung ignoriert und entsprechend nicht
+ ausgeführt.</para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </sect2>
- <para>
- 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.
- </para>
- </listitem>
+ <sect2 id="db-upgrade-files.dbupgrade-tool"
+ xreflabel="Hilfsscript dbupgrade2_tool.pl">
+ <title>Hilfsscript dbupgrade2_tool.pl</title>
- <listitem>
- <para>Baumform: "<command>./scripts/dbupgrade2_tool.pl --tree</command>"</para>
+ <para>Um die Arbeit mit den Abhängigkeiten etwas zu erleichtern,
+ existiert ein Hilfsscript namens
+ "<filename>scripts/dbupgrade2_tool.pl</filename>". Es muss aus dem
+ Lx-Office-ERP-Basisverzeichnis heraus aufgerufen werden. Dieses Tool
+ liest alle Datenbankupgradescripte aus dem Verzeichnis
+ <filename>sql/Pg-upgrade2</filename> aus. Es benutzt dafür die
+ gleichen Methoden wie Lx-Office selber, sodass alle Fehlersituationen
+ von der Kommandozeile überprüft werden können.</para>
- <para>
- 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.
- </para>
- </listitem>
+ <para>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:</para>
- <listitem id="db-upgrade-files.dbupgrade-tool.reverse-tree">
- <para>Umgekehrte Baumform: "<command>./scripts/dbupgrade2_tool.pl --rtree</command>"</para>
+ <itemizedlist>
+ <listitem>
+ <para>Listenform: "<command>./scripts/dbupgrade2_tool.pl
+ --list</command>"</para>
- <para>
- 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.
- </para>
- </listitem>
+ <para>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.</para>
+ </listitem>
- <listitem>
- <para>Baumform mit Postscriptausgabe: "<command>./scripts/dbupgrade2_tool.pl --graphviz</command>"</para>
+ <listitem>
+ <para>Baumform: "<command>./scripts/dbupgrade2_tool.pl
+ --tree</command>"</para>
+
+ <para>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.</para>
+ </listitem>
- <para>
- Benötigt das Tool "<command>graphviz</command>", um mit seiner Hilfe die <link
- linkend="db-upgrade-files.dbupgrade-tool.reverse-tree">umgekehrte Baumform</link> in eine Postscriptdatei namens
- "<filename>db_dependencies.ps</filename>" 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.
- </para>
- </listitem>
+ <listitem id="db-upgrade-files.dbupgrade-tool.reverse-tree">
+ <para>Umgekehrte Baumform: "<command>./scripts/dbupgrade2_tool.pl
+ --rtree</command>"</para>
- <listitem>
- <para>
- Scripte, von denen kein anderes Script abhängt: "<command>./scripts/dbupgrade2_tool.pl --nodeps</command>"
- </para>
+ <para>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.</para>
+ </listitem>
- <para>
- Listet die Tags aller Scripte auf, von denen keine anderen Scripte abhängen.
- </para>
- </listitem>
- </itemizedlist>
- </sect2>
+ <listitem>
+ <para>Baumform mit Postscriptausgabe:
+ "<command>./scripts/dbupgrade2_tool.pl
+ --graphviz</command>"</para>
+
+ <para>Benötigt das Tool "<command>graphviz</command>", um mit
+ seiner Hilfe die <link
+ linkend="db-upgrade-files.dbupgrade-tool.reverse-tree">umgekehrte
+ Baumform</link> in eine Postscriptdatei namens
+ "<filename>db_dependencies.ps</filename>" 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.</para>
+ </listitem>
+
+ <listitem>
+ <para>Scripte, von denen kein anderes Script abhängt:
+ "<command>./scripts/dbupgrade2_tool.pl --nodeps</command>"</para>
+
+ <para>Listet die Tags aller Scripte auf, von denen keine anderen
+ Scripte abhängen.</para>
+ </listitem>
+ </itemizedlist>
+ </sect2>
</sect1>
<sect1 id="translations-languages" xreflabel="Translations and languages">
</sect2>
</sect1>
- <sect1 id="devel.style-guide">
+ <sect1 id="devel.style-guide">
<title>Stil-Richtlinien</title>
- <para>
- 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").
- </para>
+ <para>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").</para>
- <para>
- Diese Regeln sind keine Schikane sondern erleichtern allen das Leben!
- </para>
+ <para>Diese Regeln sind keine Schikane sondern erleichtern allen das
+ Leben!</para>
- <para>
- Jeder, der einen Patch schickt, sollte seinen Code vorher überprüfen. Einige der Regeln lassen sich automatisch überprüfen, andere
- nicht.
- </para>
+ <para>Jeder, der einen Patch schickt, sollte seinen Code vorher
+ überprüfen. Einige der Regeln lassen sich automatisch überprüfen, andere
+ nicht.</para>
<orderedlist>
- <listitem>
- <para>
- Es werden keine echten Tabs sondern Leerzeichen verwendet.
- </para>
- </listitem>
+ <listitem>
+ <para>Es werden keine echten Tabs sondern Leerzeichen
+ verwendet.</para>
+ </listitem>
- <listitem>
- <para>
- Die Einrückung beträgt zwei Leerzeichen. Beispiel:
- </para>
+ <listitem>
+ <para>Die Einrückung beträgt zwei Leerzeichen. Beispiel:</para>
- <programlisting>foreach my $row (@data) {
+ <programlisting>foreach my $row (@data) {
if ($flag) {
# do something with $row
}
$report->add($row);
}</programlisting>
- </listitem>
+ </listitem>
- <listitem>
- <para>Öffnende geschweifte Klammern befinden sich auf der gleichen Zeile wie der letzte Befehl. Beispiele:</para>
+ <listitem>
+ <para>Öffnende geschweifte Klammern befinden sich auf der gleichen
+ Zeile wie der letzte Befehl. Beispiele:</para>
- <programlisting>sub debug {
+ <programlisting>sub debug {
...
}</programlisting>
- <para>oder</para>
+ <para>oder</para>
- <programlisting>if ($form->{item_rows} > 0) {
+ <programlisting>if ($form->{item_rows} > 0) {
...
}</programlisting>
- </listitem>
+ </listitem>
- <listitem>
- <para>
- 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.
- </para>
- </listitem>
+ <listitem>
+ <para>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.</para>
+ </listitem>
- <listitem>
- <para>
- Die Wörter "<function>else</function>", "<function>elsif</function>", "<function>while</function>" befinden sich auf der gleichen
- Zeile wie schließende geschweifte Klammern. Beispiele:
- </para>
+ <listitem>
+ <para>Die Wörter "<function>else</function>",
+ "<function>elsif</function>", "<function>while</function>" befinden
+ sich auf der gleichen Zeile wie schließende geschweifte Klammern.
+ Beispiele:</para>
- <programlisting>if ($form->{sum} > 1000) {
+ <programlisting>if ($form->{sum} > 1000) {
...
} elsif ($form->{sum} > 0) {
...
do {
...
} until ($a > 0);</programlisting>
- </listitem>
+ </listitem>
- <listitem>
- <para>
- Parameter von Funktionsaufrufen müssen mit runden Klammern versehen werden. Davon nicht betroffen sind interne Perl-Funktionen,
- und grep-ähnliche Operatoren. Beispiel:
- </para>
+ <listitem>
+ <para>Parameter von Funktionsaufrufen müssen mit runden Klammern
+ versehen werden. Davon nicht betroffen sind interne Perl-Funktionen,
+ und grep-ähnliche Operatoren. Beispiel:</para>
- <programlisting>$main::lxdebug->message("Could not find file.");
+ <programlisting>$main::lxdebug->message("Could not find file.");
%options = map { $_ => 1 } grep { !/^#/ } @config_file;</programlisting>
- </listitem>
+ </listitem>
- <listitem>
- <para>
- Verschiedene Klammern, Ihre Ausdrücke und Leerzeichen:
- </para>
+ <listitem>
+ <para>Verschiedene Klammern, Ihre Ausdrücke und Leerzeichen:</para>
- <para>
- Generell gilt: Hashkeys und Arrayindices sollten nicht durch Leerzeichen abgesetzt werden. Logische Klammerungen ebensowenig,
- Blöcke schon. Beispiel:
- </para>
+ <para>Generell gilt: Hashkeys und Arrayindices sollten nicht durch
+ Leerzeichen abgesetzt werden. Logische Klammerungen ebensowenig,
+ Blöcke schon. Beispiel:</para>
- <programlisting>if (($form->{debug} == 1) && ($form->{sum} - 100 < 0)) {
+ <programlisting>if (($form->{debug} == 1) && ($form->{sum} - 100 < 0)) {
...
}
$array[$i + 1] = 4;
-$form->{sum} += $form->{"row_$i"};
+$form->{sum} += $form->{"row_$i"};
$form->{ $form->{index} } += 1;
-map { $form->{sum} += $form->{"row_$_"} } 1..$rowcount;</programlisting>
- </listitem>
+map { $form->{sum} += $form->{"row_$_"} } 1..$rowcount;</programlisting>
+ </listitem>
- <listitem>
- <para>
- Mehrzeilige Befehle
- </para>
+ <listitem>
+ <para>Mehrzeilige Befehle</para>
- <orderedlist>
- <listitem>
- <para>
- 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:
- </para>
+ <orderedlist>
+ <listitem>
+ <para>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:</para>
- <programlisting>$sth = $dbh->prepare("SELECT * FROM some_table WHERE col = ?",
+ <programlisting>$sth = $dbh->prepare("SELECT * FROM some_table WHERE col = ?",
$form->{some_col_value});</programlisting>
- </listitem>
+ </listitem>
- <listitem>
- <para>
- Ein Spezialfall ist der ternäre Oprator "?:", der am besten in einer übersichtlichen Tabellenstruktur organisiert
- wird. Beispiel:
- </para>
+ <listitem>
+ <para>Ein Spezialfall ist der ternäre Oprator "?:", der am
+ besten in einer übersichtlichen Tabellenstruktur organisiert
+ wird. Beispiel:</para>
- <programlisting>my $rowcount = $form->{"row_$i"} ? $i
+ <programlisting>my $rowcount = $form->{"row_$i"} ? $i
: $form->{oldcount} ? $form->{oldcount} + 1
: $form->{rowcount} - $form->{rowbase};</programlisting>
- </listitem>
- </orderedlist>
- </listitem>
+ </listitem>
+ </orderedlist>
+ </listitem>
- <listitem>
- <para>
- Kommentare
- </para>
+ <listitem>
+ <para>Kommentare</para>
- <orderedlist>
- <listitem>
- <para>Kommentare, die alleine in einer Zeile stehen, sollten soweit wie der Code eingerückt sein.</para>
- </listitem>
+ <orderedlist>
+ <listitem>
+ <para>Kommentare, die alleine in einer Zeile stehen, sollten
+ soweit wie der Code eingerückt sein.</para>
+ </listitem>
- <listitem>
- <para>Seitliche hängende Kommentare sollten einheitlich formatiert werden.</para>
- </listitem>
+ <listitem>
+ <para>Seitliche hängende Kommentare sollten einheitlich
+ formatiert werden.</para>
+ </listitem>
- <listitem>
- <para>
- 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:
- </para>
+ <listitem>
+ <para>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:</para>
- <programlisting>my $found = 0;
+ <programlisting>my $found = 0;
while (1) {
last if $found;
$n = $i; # save $i
$i *= $const; # do something crazy
$i = $n; # recover $i</programlisting>
- </listitem>
- </orderedlist>
- </listitem>
+ </listitem>
+ </orderedlist>
+ </listitem>
- <listitem>
- <para>
- Hashkeys sollten nur in Anführungszeichen stehen, wenn die Interpolation gewünscht ist. Beispiel:
- </para>
+ <listitem>
+ <para>Hashkeys sollten nur in Anführungszeichen stehen, wenn die
+ Interpolation gewünscht ist. Beispiel:</para>
- <programlisting>$form->{sum} = 0;
-$form->{"row_$i"} = $form->{"row_$i"} - 5;
+ <programlisting>$form->{sum} = 0;
+$form->{"row_$i"} = $form->{"row_$i"} - 5;
$some_hash{42} = 54;</programlisting>
- </listitem>
-
- <listitem>
- <para>
- Die maximale Zeilenlänge ist nicht beschrä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.
- </para>
-
- <para>
- Als Beispiel sei die Funktion <function>print_options</function> aus <filename>bin/mozilla/io.pl</filename> angeführt.
- </para>
- </listitem>
-
- <listitem>
- <para>
- Trailing Whitespace, d.h. Leerzeichen am Ende von Zeilen sind unerwünscht. Sie führen zu unnötigen Whitespaceänderungen, die
- diffs verfälschen.
- </para>
-
- <para>
- Emacs und vim haben beide recht einfache Methoden zur Entfernung von trailing whitespace. Emacs kennt das Kommande
- <command>nuke-trailing-whitespace</command>, vim macht das gleiche manuell über <literal>:%s/\s\+$//e</literal> Mit <literal>:au
- BufWritePre * :%s/\s\+$//e</literal> wird das an Speichern gebunden.
- </para>
- </listitem>
+ </listitem>
- <listitem>
- <para>
- Es wird kein <command>perltidy</command> verwendet.
- </para>
+ <listitem>
+ <para>Die maximale Zeilenlänge ist nicht beschrä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.</para>
+
+ <para>Als Beispiel sei die Funktion
+ <function>print_options</function> aus
+ <filename>bin/mozilla/io.pl</filename> angeführt.</para>
+ </listitem>
- <para>
- In der Vergangenheit wurde versucht, <command>perltidy</command> zu verwenden, um einen einheitlichen Stil zu erlangen. Es hat
- sich aber gezeigt, dass <command>perltidy</command>s sehr eigenwilliges Verhalten, was Zeilenumbrüche angeht, oftmals gut
- formatierten Code zerstört. Für den Interessierten sind hier die <command>perltidy</command>-Optionen, die grob den
- beschriebenen Richtlinien entsprechen:
- </para>
+ <listitem>
+ <para>Trailing Whitespace, d.h. Leerzeichen am Ende von Zeilen sind
+ unerwünscht. Sie führen zu unnötigen Whitespaceänderungen, die diffs
+ verfälschen.</para>
+
+ <para>Emacs und vim haben beide recht einfache Methoden zur
+ Entfernung von trailing whitespace. Emacs kennt das Kommande
+ <command>nuke-trailing-whitespace</command>, vim macht das gleiche
+ manuell über <literal>:%s/\s\+$//e</literal> Mit <literal>:au
+ BufWritePre * :%s/\s\+$//e</literal> wird das an Speichern
+ gebunden.</para>
+ </listitem>
- <programlisting>-syn -i=2 -nt -pt=2 -sbt=2 -ci=2 -ibc -hsc -noll -nsts -nsfs -asc -dsm
+ <listitem>
+ <para>Es wird kein <command>perltidy</command> verwendet.</para>
+
+ <para>In der Vergangenheit wurde versucht,
+ <command>perltidy</command> zu verwenden, um einen einheitlichen
+ Stil zu erlangen. Es hat sich aber gezeigt, dass
+ <command>perltidy</command>s sehr eigenwilliges Verhalten, was
+ Zeilenumbrüche angeht, oftmals gut formatierten Code zerstört. Für
+ den Interessierten sind hier die
+ <command>perltidy</command>-Optionen, die grob den beschriebenen
+ Richtlinien entsprechen:</para>
+
+ <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</programlisting>
- </listitem>
-
- <listitem>
- <para>
- <varname>STDERR</varname> ist tabu. Unkonditionale Debugmeldungen auch.
- </para>
-
- <para>
- Lx-Office bietet mit dem Modul <classname>LXDebug</classname> einen brauchbaren Trace-/Debug-Mechanismus. Es gibt also keinen
- Grund, nach <varname>STDERR</varname> zu schreiben.
- </para>
+ </listitem>
- <para>
- Die <classname>LXDebug</classname>-Methode "<function>message</function>" 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.
- </para>
- </listitem>
+ <listitem>
+ <para><varname>STDERR</varname> ist tabu. Unkonditionale
+ Debugmeldungen auch.</para>
+
+ <para>Lx-Office bietet mit dem Modul <classname>LXDebug</classname>
+ einen brauchbaren Trace-/Debug-Mechanismus. Es gibt also keinen
+ Grund, nach <varname>STDERR</varname> zu schreiben.</para>
+
+ <para>Die <classname>LXDebug</classname>-Methode
+ "<function>message</function>" 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.</para>
+ </listitem>
- <listitem>
- <para>
- Alle neuen Module müssen use strict verwenden.
- </para>
+ <listitem>
+ <para>Alle neuen Module müssen use strict verwenden.</para>
- <para>
- <varname>$form</varname>, <varname>$auth</varname>, <varname>$locale</varname>, <varname>$lxdebug</varname> und
- <varname>%myconfig</varname> werden derzeit aus dem main package importiert (siehe <xref linkend="devel.globals"/>. Alle anderen
- Konstrukte sollten lexikalisch lokal gehalten werden.
- </para>
- </listitem>
+ <para><varname>$form</varname>, <varname>$auth</varname>,
+ <varname>$locale</varname>, <varname>$lxdebug</varname> und
+ <varname>%myconfig</varname> werden derzeit aus dem main package
+ importiert (siehe <xref linkend="devel.globals" />. Alle anderen
+ Konstrukte sollten lexikalisch lokal gehalten werden.</para>
+ </listitem>
</orderedlist>
</sect1>
<sect1 id="devel.build-doc" xreflabel="Dokumentation erstellen">
- <title>Dokumentation erstellen</title>
+ <title>Dokumentation erstellen</title>
- <sect2 id="devel.build-doc.introduction">
- <title>Einführung</title>
+ <sect2 id="devel.build-doc.introduction">
+ <title>Einführung</title>
- <para>
- Diese Dokumentation ist in <productname>DocBook</productname> 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
- <productname>DocBook</productname> mitbringt. Wir empfehlen dafür den <ulink url="http://www.xmlmind.com/xmleditor/">XMLmind XML
- Editor</ulink>, der bei nicht kommerzieller Nutzung kostenlos ist.
- </para>
- </sect2>
+ <para>Diese Dokumentation ist in <productname>DocBook</productname>
+ 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
+ <productname>DocBook</productname> mitbringt. Wir empfehlen dafür den
+ <ulink url="http://www.xmlmind.com/xmleditor/">XMLmind XML
+ Editor</ulink>, der bei nicht kommerzieller Nutzung kostenlos
+ ist.</para>
+ </sect2>
- <sect2 id="devel.build-doc.required-software">
- <title>Benötigte Software</title>
+ <sect2 id="devel.build-doc.required-software">
+ <title>Benötigte Software</title>
- <para>
- Bei <productname>DocBook</productname> 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
- <command>scripts/build_doc.sh</command>.
- </para>
+ <para>Bei <productname>DocBook</productname> 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
+ <command>scripts/build_doc.sh</command>.</para>
- <para>
- Das Script benötigt zur Konvertierung verschiedene Softwarekomponenten, die im normalen Lx-Office-Betrieb nicht benötigt werden:
- </para>
+ <para>Das Script benötigt zur Konvertierung verschiedene
+ Softwarekomponenten, die im normalen Lx-Office-Betrieb nicht benötigt
+ werden:</para>
- <itemizedlist>
- <listitem>
- <para>
- <ulink url="http://www.oracle.com/technetwork/java/index.html">Java</ulink> in einer halbwegs aktuellen Version
- </para>
- </listitem>
+ <itemizedlist>
+ <listitem>
+ <para><ulink
+ url="http://www.oracle.com/technetwork/java/index.html">Java</ulink>
+ in einer halbwegs aktuellen Version</para>
+ </listitem>
- <listitem>
- <para>
- Das Java-Build-System <ulink url="http://ant.apache.org/">Apache Ant</ulink>
- </para>
- </listitem>
+ <listitem>
+ <para>Das Java-Build-System <ulink
+ url="http://ant.apache.org/">Apache Ant</ulink></para>
+ </listitem>
- <listitem>
- <para>
- Das Dokumentations-System Dobudish für <productname>DocBook</productname> 4.5, eine Zusammenstellung diverser Stylesheets und
- Grafiken zur Konvertierung von <productname>DocBook</productname> XML in andere Formate. Das Paket, das benötigt wird, ist zum
- Zeitpunkt der Dokumentationserstellung <filename>dobudish-nojre-1.1.4.zip</filename>, aus auf <ulink
- url="http://code.google.com/p/dobudish/downloads/list">code.google.com</ulink> bereitsteht.
- </para>
- </listitem>
- </itemizedlist>
+ <listitem>
+ <para>Das Dokumentations-System Dobudish für
+ <productname>DocBook</productname> 4.5, eine Zusammenstellung
+ diverser Stylesheets und Grafiken zur Konvertierung von
+ <productname>DocBook</productname> XML in andere Formate. Das
+ Paket, das benötigt wird, ist zum Zeitpunkt der
+ Dokumentationserstellung
+ <filename>dobudish-nojre-1.1.4.zip</filename>, aus auf <ulink
+ url="http://code.google.com/p/dobudish/downloads/list">code.google.com</ulink>
+ bereitsteht.</para>
+ </listitem>
+ </itemizedlist>
- <para>
- Apache Ant sowie ein dazu passendes Java Runtime Environment sind auf allen gängigen Plattformen verfügbar. Beispiel für
- Debian/Ubuntu:
- </para>
+ <para>Apache Ant sowie ein dazu passendes Java Runtime Environment
+ sind auf allen gängigen Plattformen verfügbar. Beispiel für
+ Debian/Ubuntu:</para>
- <programlisting>apt-get install ant openjdk-7-jre</programlisting>
+ <programlisting>apt-get install ant openjdk-7-jre</programlisting>
- <para>
- Nach dem Download von Dobudish muss Dobudish im Unterverzeichnis <filename>doc/build</filename> entpackt werden. Beispiel unter der
- Annahme, das <productname>Dobudish</productname> in <filename>$HOME/Downloads</filename> heruntergeladen wurde:
- </para>
+ <para>Nach dem Download von Dobudish muss Dobudish im Unterverzeichnis
+ <filename>doc/build</filename> entpackt werden. Beispiel unter der
+ Annahme, das <productname>Dobudish</productname> in
+ <filename>$HOME/Downloads</filename> heruntergeladen wurde:</para>
- <programlisting>cd doc/build
+ <programlisting>cd doc/build
unzip $HOME/Downloads/dobudish-nojre-1.1.4.zip</programlisting>
- </sect2>
+ </sect2>
- <sect2 id="devel.build-doc.build">
- <title>PDFs und HTML-Seiten erstellen</title>
+ <sect2 id="devel.build-doc.build">
+ <title>PDFs und HTML-Seiten erstellen</title>
- <para>
- Die eigentliche Konvertierung erfolgt nach Installation der benötigten Software mit einem einfachen Aufruf direkt aus dem
- Lx-Office-Installationsverzeichnis heraus:
- </para>
+ <para>Die eigentliche Konvertierung erfolgt nach Installation der
+ benötigten Software mit einem einfachen Aufruf direkt aus dem
+ Lx-Office-Installationsverzeichnis heraus:</para>
- <programlisting>./scripts/build_doc.sh</programlisting>
- </sect2>
+ <programlisting>./scripts/build_doc.sh</programlisting>
+ </sect2>
- <sect2 id="devel.build-doc.repository">
- <title>Einchecken in das Git-Repository</title>
+ <sect2 id="devel.build-doc.repository">
+ <title>Einchecken in das Git-Repository</title>
- <para>
- 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.
- </para>
+ <para>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.</para>
- <para>
- Die "<filename>dobudish</filename>"-Verzeichnisse bzw. symbolischen Links gehören hingegen nicht in das Repository.
- </para>
- </sect2>
+ <para>Die "<filename>dobudish</filename>"-Verzeichnisse bzw.
+ symbolischen Links gehören hingegen nicht in das Repository.</para>
+ </sect2>
</sect1>
</chapter>
</book>