Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision 3adb0cb7

Von Moritz Bunkus vor etwa 13 Jahren hinzugefügt

  • ID 3adb0cb772af4bcdbd867b5688b3e02356a2e613
  • Vorgänger c4184d54
  • Nachfolger 1c103b3a

doc/skr04-update-3804 nach DocBook gewandelt

Unterschiede anzeigen:

doc/dokumentation.xml
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>
......
<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">
......
</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
Abschintte 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]
......
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
......
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>&lt;%login%&gt;</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>&lt;%login%&gt;</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
......
<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}-&gt;{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}-&gt;{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> -&gt;
<guisubmenu>Kontenübersicht</guisubmenu> -&gt; <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> -&gt;
<guisubmenu>Steuern</guisubmenu> -&gt; <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> -&gt;
<guisubmenu>Steuern</guisubmenu> -&gt; <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> -&gt; <guisubmenu>Kontenübersicht</guisubmenu> -&gt; <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> -&gt; <guisubmenu>Steuern</guisubmenu> -&gt;
<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-&gt;Berichte-&gt;Aufträge finden sich zwei neue Checkboxen, &quot;Wiederkehrende Rechnungen aktiv&quot; und
&quot;Wiederkehrende Rechnungen inaktiv&quot;, 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-&gt;Berichte-&gt;Aufträge finden sich zwei neue
Checkboxen, "Wiederkehrende Rechnungen aktiv" und "Wiederkehrende
Rechnungen inaktiv", mit denen man sich einen Überglick über die
wiederkehrenden Rechnungen verschaffen kann.</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>&lt;%variablenname%&gt;</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-&gt;retrieve_customer()</function> in
Sicherheit bringen. </para>
gewachsen sind), sollte man vor einem Aufruf (!) von zum Beispiel
<function>IS-&gt;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-&gt;{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>&lt;%var%&gt;</function> zeigt auf
<varname>$::form-&gt;{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-&gt;{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>&lt;%var%&gt;</function> zeigt auf
<varname>$::form-&gt;{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-&gt;{business} ausgewertet oder aber der Funktion <function>$form-&gt;parse_html_template</function>
... Dieser Diff wurde abgeschnitten, weil er die maximale Anzahl anzuzeigender Zeilen überschreitet.

Auch abrufbar als: Unified diff