X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=doc%2Fdokumentation.xml;h=80d23d301af35d2f0efd6aae1b829b45b23bb04a;hb=06cb6b127be7185927c6a3b32d16295d55e162ea;hp=b2bc7084769edf340b5b9727e054edb7227cd3ca;hpb=27f054b7e2b2a0847a3812a24324fcc48779641f;p=kivitendo-erp.git diff --git a/doc/dokumentation.xml b/doc/dokumentation.xml index b2bc70847..80d23d301 100644 --- a/doc/dokumentation.xml +++ b/doc/dokumentation.xml @@ -1,7 +1,7 @@ - + Lx-Office: Installation, Konfiguration, Entwicklung @@ -25,8 +25,6 @@ url="http://www.lx-office.org/forum/">http://www.lx-office.org/forum/ - - @@ -45,11 +43,13 @@ ohne große Probleme auf den derzeit aktuellen verbreiteten Distributionen läuft. - Anfang 2012 sind das folgende Systeme, von denen bekannt ist, dass Lx-Office auf ihnen läuft: + Anfang 2012 sind das folgende Systeme, von denen bekannt ist, + dass Lx-Office auf ihnen läuft: - Ubuntu 8.04 LTS Hardy Heron, 10.04 LTS Lucid Lynx bis 11.10 Oneiric Ocelot + Ubuntu 8.04 LTS Hardy Heron, 10.04 LTS Lucid Lynx bis 11.10 + Oneiric Ocelot @@ -76,10 +76,10 @@ Alternativ dazu kann die normale Installation durchgeführt werden (siehe ), wenn vorher + linkend="Manuelle-Installation-des-Programmpaketes" />), wenn vorher ein Kompatibilitätspaket installiert wird, das die fehlenden Pakete bereitstellt. Das Paket ist auf Sourceforge + url="https://sourceforge.net/projects/lx-office/files/Lx-Office%20ERP/2.6.3/">Sourceforge unter dem Namen lx-erp-perl-libs-compat-v2.tar.gz hinterlegt. @@ -91,10 +91,11 @@ Zusätzlich müssen dann noch die folgenden Pakete installiert weerden - apt-get install libbit-vector-perl libsub-exporter-perl libclone-perl libclass-factory-util-perl + apt-get install libbit-vector-perl libsub-exporter-perl libclone-perl \ + libclass-factory-util-perl Danach sollte der Installationscheck (siehe ) die enthaltenen Pakete erkennen. + linkend="Pakete" />) die enthaltenen Pakete erkennen. @@ -221,7 +222,7 @@ 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 + libparams-validate-perl libjson-perl libclass-accessor-perl Für Fedora Core benötigen Sie diese Pakete: @@ -262,100 +263,131 @@ /var/www/) entpackt: cd /var/www tar xvzf -lxoffice-erp-2.6.2.tgz +lxoffice-erp-2.6.3.tgz - Verändern Sie evtl. noch den Namen des Verzeichnisses mit + Verändern Sie evtl. noch den Namen des Verzeichnisses und wechseln Sie in es: - mv lxoffice-erp/ lx-erp/ + mv lxoffice-erp/ lx-erp/ +cd lx-erp Alternativ können Sie auch einen Alias in der Webserverkonfiguration benutzen, um auf das tatsächliche Installationsverzeichnis zu verweisen. - Die Verzeichnisse users, - spool und webdav 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 www-data, bei Fedora core - apache oder bei OpenSuSE - wwwrun). + Die Verzeichnisse users, spool und webdav 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 www-data, bei Fedora + core apache oder bei OpenSuSE wwwrun). Der folgende Befehl ändert den Besitzer für die oben genannten Verzeichnisse auf einem Debian/Ubuntu-System: - chown -R www-data lx-office-erp/users lx-office-erp/spool lx-office-erp/webdav + chown -R www-data users spool webdav - Weiterhin muss der Webserver-Benutzer im Verzeichnis - templates Verzeichnisse für jeden neuen Benutzer, - der in lx-office angelegt wird, anlegen dürfen: + Weiterhin muss der Webserver-Benutzer in den Verzeichnissen templates und users + Unterverzeichnisse für jeden neuen Benutzer anlegen dürfen, der in Lx-Office angelegt wird: - chgrp www-data lx-office-erp/templates -chmod g+w lx-office-erp/templates + chown www-data templates users - Lx-Office-Konfigurationsdatei + Lx-Office-Konfigurationsdatei - - Einführung + + Einführung - - Seit Lx-Office 2.6.3. gibt es nur noch eine Konfigurationsdatei die benötigt wird: config/lx_office.conf (kurz: - "die Hauptkonfigurationsdatei"). Diese muss bei der Erstinstallation von Lx-Office bzw. der Migration von älteren Versionen angelegt - werden. - + Seit Lx-Office 2.6.3. gibt es nur noch eine Konfigurationsdatei + die benötigt wird: config/lx_office.conf (kurz: + "die Hauptkonfigurationsdatei"). Diese muss bei der Erstinstallation + von Lx-Office bzw. der Migration von älteren Versionen angelegt + werden. - - Als Vorlage dient die Datei config/lx_office.conf.default (kurz: "die Default-Datei"): - + Als Vorlage dient die Datei + config/lx_office.conf.default (kurz: "die + Default-Datei"): - $ cp config/lx_office.conf.default config/lx_office.conf + $ cp config/lx_office.conf.default config/lx_office.conf - - 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. - + 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. - - Diese Hauptkonfigurationsdatei ist dann eine installationsspezifische Datei, d.h. sie enthält bspw. lokale Passwörter und wird auch - nicht im Versionsmanagement (git) verwaltet. - + Diese Hauptkonfigurationsdatei ist dann eine + installationsspezifische Datei, d.h. sie enthält bspw. lokale + Passwörter und wird auch nicht im Versionsmanagement (git) + verwaltet. - - Die Konfiguration ist ferner serverabhängig, d.h. für alle Mandaten, bzw. Datenbanken gleich. - - + Die Konfiguration ist ferner serverabhängig, d.h. für alle + Mandaten, bzw. Datenbanken gleich. + - - Abschnitte und Parameter + + Abschnitte und Parameter - - Die Konfigurationsdatei besteht aus mehreren Teilen, die entsprechend kommentiert sind: - + Die Konfigurationsdatei besteht aus mehreren Teilen, die + entsprechend kommentiert sind: - - authentication - authentication/database - authentication/ldap - system - features - paths - applications - environment - print_templates - task_server - periodic_invoices - console - debug - + + + authentication + + + + authentication/database + + + + authentication/ldap + + + + system + + + + features + + + + paths + + + + applications + + + + environment + - - Die üblicherweise wichtigsten Parameter, die am Anfang einzustellen oder zu kontrollieren sind, sind: - + + print_templates + + + + task_server + + + + periodic_invoices + + + + console + + + + debug + + - [authentication] + Die üblicherweise wichtigsten Parameter, die am Anfang + einzustellen oder zu kontrollieren sind, sind: + + [authentication] admin_password = geheim [authentication/database] @@ -366,41 +398,41 @@ user = postgres password = [system] -eur = 1 dbcharset = UTF-8 - - Nutzt man wiederkehrende Rechnungen, kann man unter [periodic_invoices] den Login eines Benutzers angeben, der - nach Erstellung der Rechnungen eine entsprechende E-Mail mit Informationen über die erstellten Rechnungen bekommt. - - - - Nutzt man den Taskserver für wiederkehrende Rechnungen, muss unter [task_server] ein Login eines - Benutzers angegeben werden, mit dem sich der Taskserver an Lx-Office bei der Datenbank anmeldet, die dem Benutzer zugewiesen ist. - - - - Für Entwickler finden sich unter [debug] wichtige Funktionen, um die Fehlersuche zu erleichtern. - - - - - Versionen vor 2.6.3 - - - In älteren Lx-Office Versionen gab es im Verzeichnis config die Dateien authentication.pl - und lx-erp.conf, die jeweils Perl-Dateien waren. Es gab auch die Möglichkeit, eine lokale Version der - Konfigurationsdatei zu erstellen (lx-erp-local.conf). Dies ist ab 2.6.3 nicht mehr möglich, aber auch nicht mehr - nötig. - - - - 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. - - + Nutzt man wiederkehrende Rechnungen, kann man unter + [periodic_invoices] den Login eines Benutzers + angeben, der nach Erstellung der Rechnungen eine entsprechende E-Mail + mit Informationen über die erstellten Rechnungen bekommt. + + Nutzt man den Taskserver für wiederkehrende Rechnungen, + muss unter [task_server] ein Login eines Benutzers + angegeben werden, mit dem sich der Taskserver an Lx-Office bei der + Datenbank anmeldet, die dem Benutzer zugewiesen ist. + + Für Entwickler finden sich unter [debug] + wichtige Funktionen, um die Fehlersuche zu erleichtern. + + + + Versionen vor 2.6.3 + + In älteren Lx-Office Versionen gab es im Verzeichnis + config die Dateien + authentication.pl und + lx-erp.conf, die jeweils Perl-Dateien waren. Es + gab auch die Möglichkeit, eine lokale Version der Konfigurationsdatei + zu erstellen (lx-erp-local.conf). Dies ist ab + 2.6.3 nicht mehr möglich, aber auch nicht mehr nötig. + + 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. + @@ -417,13 +449,17 @@ dbcharset = UTF-8 PostgreSQL-Datenbankcluster muss ebenfalls mit UTF-8 als Locale angelegt worden sein. - 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: + 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: pg_createcluster --locale=de_DE.UTF-8 --encoding=UTF-8 8.2 clustername - Die Datenbankversionsnummer muss an die tatsächlich verwendete Versionsnummer angepasst werden. + Die Datenbankversionsnummer muss an die tatsächlich verwendete + Versionsnummer angepasst werden. Unter anderen Distributionen gibt es ähnliche Methoden. @@ -431,7 +467,8 @@ dbcharset = UTF-8 ist ein Neuanlegen eines weiteren Clusters nicht möglich, so kann Lx-Office mit ISO-8859-15 als Encoding betrieben werden. - Das Encoding einer Datenbank kann in psql mit \l geprüft werden. + Das Encoding einer Datenbank kann in psql mit + \l geprüft werden. @@ -440,8 +477,8 @@ dbcharset = UTF-8 In der Datei postgresql.conf, die je nach Distribution in verschiedenen Verzeichnissen liegen kann (z.B. /var/lib/pgsql/data/ oder - /etc/postgresql/, muss sichergestellt werden, dass - TCP/IP-Verbindungen aktiviert sind. Das Verhalten wird über den + /etc/postgresql/, muss sichergestellt werden, + dass TCP/IP-Verbindungen aktiviert sind. Das Verhalten wird über den Parameter listen_address gesteuert. Laufen PostgreSQL und Lx-Office auf demselben Rechner, so kann dort der Wert localhost verwendet werden. Andernfalls müssen @@ -449,9 +486,9 @@ dbcharset = UTF-8 was mit dem Wert * geschieht. In der Datei pg_hba.conf, die im gleichen - Verzeichnis wie die postgresql.conf 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 postgresql.conf 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: local all all trust @@ -462,8 +499,6 @@ host all all 127.0.0.1 255.0.0.0 trust local all lxoffice password host all lxoffice 127.0.0.1 255.255.255.255 password - - @@ -475,7 +510,6 @@ host all lxoffice 127.0.0.1 255.255.255.255 password führen Sie die folgenden Kommandos aus: create language 'plpgsql'; - @@ -491,8 +525,6 @@ host all lxoffice 127.0.0.1 255.255.255.255 password Wenn Sie später einen Datenbankzugriff konfigurieren, verändern Sie den evtl. voreingestellten Benutzer “postgres” auf “lxoffice” bzw. den hier gewählten Benutzernamen. - - @@ -505,7 +537,7 @@ host all lxoffice 127.0.0.1 255.255.255.255 password Für einen deutlichen Performanceschub sorgt die Ausführung mittels FastCGI/FCGI. Die Einrichtung wird ausführlich im Abschnitt - beschrieben. + beschrieben. Der Zugriff auf das Programmverzeichnis muss in der Apache @@ -531,7 +563,8 @@ Alias /lx-erp/ /var/www/lx-erp/ das Lx-Office-Archiv entpacket haben. - Vor den einzelnen Optionen muss bei einigen Distributionen ein Plus ‘+’ gesetzt werden. + Vor den einzelnen Optionen muss bei einigen Distributionen ein + Plus ‘+’ gesetzt werden. Auf einigen Webservern werden manchmal die Grafiken und @@ -602,14 +635,13 @@ Alias /lx-erp/ /var/www/lx-erp/ verwendet. - - 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. - + 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. - - Mit CPAN lässt sie sich die Vorgängerversion wie folgt installieren: - + Mit CPAN lässt sie sich die Vorgängerversion wie folgt + installieren: force install M/MS/MSTROUT/FCGI-0.68.tar.gz @@ -696,8 +728,10 @@ Alias /url/for/lx-office-erp /path/to/lx-office-erp 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/ - Dann ist unter /url/for/lx-office-erp/ die normale Version erreichbar, und unter - /url/for/lx-office-erp-fcgid/ die FastCGI-Version. + Dann ist unter /url/for/lx-office-erp/ + die normale Version erreichbar, und unter + /url/for/lx-office-erp-fcgid/ die + FastCGI-Version. @@ -721,36 +755,39 @@ Alias /url/for/lx-office-erp-fcgid/ /path/to/lx-office-erp/ - - login - - - 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. - - - + + login - - run_as - - - Wird der Server vom Systembenutzer root gestartet, so wechselt er auf den mit run_as - angegebenen Systembenutzer. Der Systembenutzer muss dieselben Lese- und Schreibrechte haben, wie auch der Webserverbenutzer - (siehe see ). Daher ist es sinnvoll, hier denselben Systembenutzer - einzutragen, unter dem auch der Webserver läuft. - - - + + 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. + + - - debug - - - Schaltet Debug-Informationen an und aus. - - - + + run_as + + + Wird der Server vom Systembenutzer root + gestartet, so wechselt er auf den mit run_as + angegebenen Systembenutzer. Der Systembenutzer muss dieselben + Lese- und Schreibrechte haben, wie auch der Webserverbenutzer + (siehe see ). Daher + ist es sinnvoll, hier denselben Systembenutzer einzutragen, + unter dem auch der Webserver läuft. + + + + + debug + + + Schaltet Debug-Informationen an und aus. + + @@ -794,7 +831,8 @@ insserv lx-office-task-server - Danach kann der Task-Server mit dem folgenden Befehl gestartet werden: /etc/init.d/lx-office-task-server + Danach kann der Task-Server mit dem folgenden Befehl gestartet + werden: /etc/init.d/lx-office-task-server start @@ -807,7 +845,8 @@ insserv lx-office-task-server Passen Sie in der kopierten Datei den Pfad zum Task-Server an (Zeile exec ....). - Danach kann der Task-Server mit dem folgenden Befehl gestartet werden: service lx-office-task-server + Danach kann der Task-Server mit dem folgenden Befehl gestartet + werden: service lx-office-task-server start @@ -850,8 +889,6 @@ insserv lx-office-task-server Dieselben Optionen können auch für die SystemV-basierenden Runlevel-Scripte benutzt werden (siehe oben). - - @@ -861,8 +898,6 @@ insserv lx-office-task-server Informationen über die Einrichtung der Benutzerauthentifizierung, über die Verwaltung von Gruppen und weitere Einstellungen - - Grundlagen zur Benutzerauthentifizierung @@ -893,52 +928,63 @@ insserv lx-office-task-server Administratorpasswort - 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 - admin_password im Abschnitt [authentication]. + 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 admin_password im + Abschnitt [authentication]. Authentifizierungsdatenbank - Die Verbindung zur Authentifizierungsdatenbank wird mit den Parametern in [authentication/database] - konfiguriert. Hier sind die folgenden Parameter anzugeben: + Die Verbindung zur Authentifizierungsdatenbank wird mit den + Parametern in [authentication/database] + konfiguriert. Hier sind die folgenden Parameter anzugeben: - - host - - Der Rechnername oder die IP-Adresse des Datenbankservers - - + + host - - port - - Die Portnummer des Datenbankservers, meist 5432 - - + + Der Rechnername oder die IP-Adresse des + Datenbankservers + + - - db - - Der Name der Authentifizierungsdatenbank - - + + port - - user - - Der Benutzername, mit dem sich Lx-Office beim Datenbankserver anmeldet (z.B. "postgres") - - + + Die Portnummer des Datenbankservers, meist 5432 + + - - password - - Das Passwort für den Datenbankbenutzer - - + + db + + + Der Name der Authentifizierungsdatenbank + + + + + user + + + Der Benutzername, mit dem sich Lx-Office beim + Datenbankserver anmeldet (z.B. + "postgres") + + + + + password + + + Das Passwort für den Datenbankbenutzer + + Die Datenbank muss noch nicht existieren. Lx-Office kann sie @@ -948,84 +994,112 @@ insserv lx-office-task-server Passwortüberprüfung - 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 module im Abschnitt + 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 module im Abschnitt [authentication]. - Sollen die Benutzerpasswörter in der Authentifizierungsdatenbank gespeichert werden, so muss der Parameter - module den Wert DB enthalten. In diesem Fall können sowohl der Administrator als auch die - Benutzer selber ihre Psaswörter in Lx-Office ändern. + Sollen die Benutzerpasswörter in der Authentifizierungsdatenbank + gespeichert werden, so muss der Parameter module + den Wert DB enthalten. In diesem Fall können sowohl + der Administrator als auch die Benutzer selber ihre Psaswörter in + Lx-Office ändern. - Soll hingegen ein externer LDAP- oder Active-Directory-Server benutzt werden, so muss der Parameter module - auf LDAP gesetzt werden. In diesem Fall müssen zusätzliche Informationen über den LDAP-Server im Abschnitt + Soll hingegen ein externer LDAP- oder Active-Directory-Server + benutzt werden, so muss der Parameter module auf + LDAP gesetzt werden. In diesem Fall müssen + zusätzliche Informationen über den LDAP-Server im Abschnitt [authentication/ldap] angegeben werden: - - host - - Der Rechnername oder die IP-Adresse des LDAP- oder Active-Directory-Servers. Diese Angabe ist zwingend - erforderlich. - - + + host - - port - - Die Portnummer des LDAP-Servers; meist 389. - - + + Der Rechnername oder die IP-Adresse des LDAP- oder + Active-Directory-Servers. Diese Angabe ist zwingend + erforderlich. + + - - tls - - Wenn Verbindungsverschlüsselung gewünscht ist, so diesen Wert auf ‘1’ setzen, andernfalls auf - ‘0’ belassen - - + + port - - attribute - - Das LDAP-Attribut, in dem der Benutzername steht, den der Benutzer eingegeben hat. Für Active-Directory-Server ist dies - meist ‘sAMAccountName’, für andere LDAP-Server hingegen ‘uid’. Diese Angabe ist zwingend - erforderlich. - - + + Die Portnummer des LDAP-Servers; meist 389. + + - - base_dn - - Der Abschnitt des LDAP-Baumes, der durchsucht werden soll. Diese Angabe ist zwingend erforderlich. - - + + tls - - filter - - Ein optionaler LDAP-Filter. Enthält dieser Filter das Wort <%login%>, 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. - - + + Wenn Verbindungsverschlüsselung gewünscht ist, so diesen + Wert auf ‘1’ setzen, andernfalls auf + ‘0’ belassen + + - - bind_dn und bind_password - - 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 ‘bind_dn’ entweder eine - komplette LDAP-DN wie z.B. ‘cn=Martin Mustermann,cn=Users,dc=firmendomain’ auch nur der volle Name des - Benutzers eingegeben werden; in diesem Beispiel also ‘Martin Mustermann’. - - + + attribute + + + Das LDAP-Attribut, in dem der Benutzername steht, den der + Benutzer eingegeben hat. Für Active-Directory-Server ist dies + meist ‘sAMAccountName’, für andere + LDAP-Server hingegen ‘uid’. Diese Angabe ist + zwingend erforderlich. + + + + + base_dn + + + Der Abschnitt des LDAP-Baumes, der durchsucht werden soll. + Diese Angabe ist zwingend erforderlich. + + + + + filter + + + Ein optionaler LDAP-Filter. Enthält dieser Filter das Wort + <%login%>, 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. + + + + + bind_dn und + bind_password + + + 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 + ‘bind_dn’ entweder eine komplette LDAP-DN wie + z.B. ‘cn=Martin + Mustermann,cn=Users,dc=firmendomain’ auch nur der + volle Name des Benutzers eingegeben werden; in diesem Beispiel + also ‘Martin Mustermann’. + + Name des Session-Cookies - 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 cookie_name im Abschnitt + 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 cookie_name im Abschnitt [authentication]gesetzt. Diese Angabe ist optional, wenn nur eine Installation auf dem @@ -1043,8 +1117,6 @@ insserv lx-office-task-server http://localhost/lx-erp/admin.pl - - @@ -1195,7 +1267,7 @@ insserv lx-office-task-server Migration alter Installationen - Wenn Lx-Office 2.6.2 über eine ältere Version installiert wird, + Wenn Lx-Office 2.6.3 über eine ältere Version installiert wird, in der die Benutzerdaten noch im Dateisystem im Verzeichnis users verwaltet wurden, so bietet Lx-Office die Möglichkeit, diese Benutzerdaten automatisch in die @@ -1213,8 +1285,6 @@ insserv lx-office-task-server Mitglied in dieser Gruppe. Damit wird das Verhalten von Lx-Office bis Version 2.4.3 inklusive wiederhergestellt, und die Benutzer können sich sofort wieder anmelden und mit dem System arbeiten. - - @@ -1264,8 +1334,6 @@ insserv lx-office-task-server pdflatex), und stellen Sie sicher, dass pdflatex (oder das von Ihnen verwendete System) vom Webserver ausgeführt werden darf. - - @@ -1338,130 +1406,245 @@ insserv lx-office-task-server Dieses Verzeichnis, wie auch das komplette users-Verzeichnis, muss vom Webserver beschreibbar sein. Dieses wurde bereits erledigt (siehe ), kann aber erneut - überprüft werden, wenn die Konvertierung nach PDF fehlschlägt. - - + linkend="Manuelle-Installation-des-Programmpaketes" />), kann aber + erneut überprüft werden, wenn die Konvertierung nach PDF + fehlschlägt. - Konfiguration zur Einnahmenüberschussrechnung/Bilanzierung: EUR + Konfiguration zur Einnahmenüberschussrechnung/Bilanzierung: + EUR - - Einführung + + Einführung - - Lx-Office besaß bis inklusive Version 2.6.3 einen Konfigurationsparameter namens eur, der sich in der - Konfigurationsdatei config/lx_office.conf befindet. Somit galt er für alle Mandanten, die in dieser - Installation benutzt wurden. - + Lx-Office besaß bis inklusive Version 2.6.3 einen + Konfigurationsparameter namens eur, der sich in der + Konfigurationsdatei config/lx_office.conf + befindet. Somit galt er für alle Mandanten, die in dieser Installation + benutzt wurden. - - 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. - + 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. - - Konfigurationsparameter - - - Es gibt drei Parameter, die die Gewinnermittlungsart, Versteuerungsart und die Warenbuchungsmethode regeln: - - - - - profit_determination - - - Dieser Parameter legt die Berechnungsmethode für die Gewinnermittlung fest. Er enthält entweder balance für - Betriebsvermögensvergleich/Bilanzierung oder income für die Einnahmen-Überschuss-Rechnung. - - - - - - accounting_method - - - Dieser Parameter steuert die Buchungs- und Berechnungsmethoden für die Versteuerungsart. Er enthält entweder - accrual für die Soll-Versteuerung oder cash für die Ist-Versteuerung. - - - - - - inventory_system - - - Dieser Parameter legt die Warenbuchungsmethode fest. Er enthält entweder perpetual für die Bestandsmethode - oder periodic für die Aufwandsmethode. - - - - - - - Zum Vergleich der Funktionalität bis und nach 2.6.3: eur = 1 bedeutete Einnahmen-Überschuss-Rechnung, - Ist-Versteuerung und Aufwandsmethode. eur = 0 bedeutete hingegen Bilanzierung, Soll-Versteuerung und - Bestandsmethode. - - - - Die Konfiguration "eur" unter [system] in der Konfigurationsdatei config/lx_office.conf wird nun nicht mehr benötigt und - kann entfernt werden. Dies muss manuell geschehen. - + + Konfigurationsparameter + + Es gibt drei Parameter, die die Gewinnermittlungsart, + Versteuerungsart und die Warenbuchungsmethode regeln: + + + + profit_determination + + + Dieser Parameter legt die Berechnungsmethode für die + Gewinnermittlung fest. Er enthält entweder + balance für + Betriebsvermögensvergleich/Bilanzierung oder + income für die + Einnahmen-Überschuss-Rechnung. + + + + + accounting_method + + + Dieser Parameter steuert die Buchungs- und + Berechnungsmethoden für die Versteuerungsart. Er enthält + entweder accrual für die Soll-Versteuerung + oder cash für die Ist-Versteuerung. + + + + + inventory_system + + + Dieser Parameter legt die Warenbuchungsmethode fest. Er + enthält entweder perpetual für die + Bestandsmethode oder periodic für die + Aufwandsmethode. + + + + + Zum Vergleich der Funktionalität bis und nach 2.6.3: + eur = 1 bedeutete Einnahmen-Überschuss-Rechnung, + Ist-Versteuerung und Aufwandsmethode. eur = 0 + bedeutete hingegen Bilanzierung, Soll-Versteuerung und + Bestandsmethode. + + Die Konfiguration "eur" unter + [system] in der Konfigurationsdatei + config/lx_office.conf wird nun nicht mehr + benötigt und kann entfernt werden. Dies muss manuell geschehen. - Festlegen der Parameter - - - Beim Anlegen eines neuen Mandanten bzw. einer neuen Datenbank in der Admininstration können diese Optionen nun unabhängig - voneinander eingestellt werden. - - - - Beim Upgrade bestehender Mandanten wird eur ausgelesen und die Variablen werden so gesetzt, daß sich an der Funktionalität nichts - ändert. - - - - 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. - + Festlegen der Parameter + + Beim Anlegen eines neuen Mandanten bzw. einer neuen Datenbank in + der Admininstration können diese Optionen nun unabhängig voneinander + eingestellt werden. + + Beim Upgrade bestehender Mandanten wird eur ausgelesen und die + Variablen werden so gesetzt, daß sich an der Funktionalität nichts + ändert. + + 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. - Bemerkungen zu Bestandsmethode - - - 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. - - - - 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. - + Bemerkungen zu Bestandsmethode + + 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. + + 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. - Bekannte Probleme + Bekannte Probleme - - 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 $::lx_office_conf{system}->{eur} ausgewertet wurde. - + 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 + $::lx_office_conf{system}->{eur} ausgewertet + wurde. - - Es fehlen Hilfetext beim Neuanlegen eines Mandanten, was die Optionen bewirken, z.B. mit zwei Standardfällen. - + Es fehlen Hilfetext beim Neuanlegen eines Mandanten, was die + Optionen bewirken, z.B. mit zwei Standardfällen. + + + + + SKR04 19% Umstellung für innergemeinschaftlichen Erwerb + + + Einführung + + 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. + + 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. + + + + Konto 3804 manuell anlegen + + Die folgenden Schritte sind notwendig, um das Konto manuell + anzulegen und zu konfigurieren. Zuerst wird in + System -> + Kontenübersicht -> Konto + erfassen das Konto angelegt. + + + Konto 3804 erfassen + + + + + + + + + + Als Zweites muss Steuergruppe 13 für Konto 3803 angepasst werden. Dazu unter System -> + Steuern -> Bearbeiten den Eintrag mit Steuerschlüssel 13 auswählen und ihn + wie im folgenden Screenshot angezeigt anpassen. + + + + Steuerschlüssel 13 für 3803 (16%) anpassen + + + + + + + + + + Als Drittes wird ein neuer Eintrag mit Steuerschlüssel 13 für Konto 3804 (19%) angelegt. Dazu unter System -> + Steuern -> Erfassen auswählen und die Werte aus dem Screenshot übernehmen. + + + + Steuerschlüssel 13 für 3804 (19%) anlegen + + + + + + + + + + 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 System -> Kontenübersicht -> Konten + anzeigen das Konto 4315 anklicken und die Einstellungen wie im Screenshot gezeigt vornehmen. + + + + Konto 4315 anpassen + + + + + + + + + + Als Letztes sollte die Steuerliste unter System -> Steuern -> + Bearbeiten kontrolliert werden. Zum Vergleich der Screenshot. + + + + Steuerliste vergleichen + + + + + + + @@ -1484,152 +1667,158 @@ insserv lx-office-task-server Features und Funktionen - - Wiederkehrende Rechnungen + + Wiederkehrende Rechnungen - - Einführung + + Einführung - - 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. - + 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. + - + + Konfiguration - - Konfiguration + 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. - - 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. - + Folgende Parameter kann man konfigurieren: - - Folgende Parameter kann man konfigurieren: - + + + Status - - - Status - - - Bei aktiven Rechnungen wird automatisch eine Rechnung erstellt, wenn die Periodizität erreicht ist (z.B. Anfang eines neuen - Monats). - - - - 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. - - - - Für gekündigte Aufträge werden nie mehr Rechnungen erstellt. Man kann sich diese Aufträge aber gesondert in den Berichten anzeigen - lassen. - - - + + Bei aktiven Rechnungen wird automatisch eine Rechnung + erstellt, wenn die Periodizität erreicht ist (z.B. Anfang eines + neuen Monats). + + 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. + + Für gekündigte Aufträge werden nie mehr Rechnungen + erstellt. Man kann sich diese Aufträge aber gesondert in den + Berichten anzeigen lassen. + + - - Periodizität - - - 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. - - - + + Periodizität - - Buchen auf - - - Das Forderungskonto, in der Regel "Forderungen aus Lieferungen und Leistungen". Das Gegenkonto ergibt sich aus den Buchungsgruppen - der betreffenden Waren. - - - + + 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. + + - - Startdatum - - - ab welchem Datum auf Rechnungserstellung geprüft werden soll - - - + + Buchen auf - - Enddatum - - - ab wann keine Rechnungen mehr erstellt werden sollen - - - + + Das Forderungskonto, in der Regel "Forderungen aus + Lieferungen und Leistungen". Das Gegenkonto ergibt sich aus den + Buchungsgruppen der betreffenden Waren. + + - - Automatische Verlängerung um x Monate - - - 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. - - - + + Startdatum - - Drucken - - - Sind Drucker konfiguriert, so kann man sich die erstellten Rechnungen auch gleich ausdrucken lassen. - - - - - - - Nach Erstellung der Rechnungen kann eine E-Mail mit Informationen zu den erstellten Rechnungen verschickt werden. Konfiguriert wird - dies in der Konfigurationsdatei - config/lx_office.conf im Abschnitt [periodic_invoices]. - - - - - Auflisten - - - 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. - - - - - Erzeugung der eigentlichen Rechnungen - - - Die zeitliche und periodische Überprüfung, ob eine wiederkehrende Rechnung automatisch erstellt werden soll, geschieht durch den - Taskserver, einen externen Dienst, der automatisch beim Start des Servers gestartet - werden sollte. - - - - - Erste Rechnung für aktuellen Monat erstellen - - - 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. - - + + ab welchem Datum auf Rechnungserstellung geprüft werden + soll + + + + + Enddatum + + + ab wann keine Rechnungen mehr erstellt werden + sollen + + + + + Automatische Verlängerung um x Monate + + + 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. + + + + + Drucken + + + Sind Drucker konfiguriert, so kann man sich die erstellten + Rechnungen auch gleich ausdrucken lassen. + + + + + Nach Erstellung der Rechnungen kann eine E-Mail mit + Informationen zu den erstellten Rechnungen verschickt werden. + Konfiguriert wird dies in der Konfigurationsdatei + config/lx_office.conf im Abschnitt + [periodic_invoices]. + + + + Auflisten + + 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. + + + + Erzeugung der eigentlichen Rechnungen + + Die zeitliche und periodische Überprüfung, ob eine + wiederkehrende Rechnung automatisch erstellt werden soll, geschieht + durch den Taskserver, einen + externen Dienst, der automatisch beim Start des Servers gestartet + werden sollte. + + + + Erste Rechnung für aktuellen Monat erstellen + + 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. + @@ -1644,7 +1833,7 @@ insserv lx-office-task-server <%variablenname%> verwendet wird. Für LaTeX- und HTML-Vorlagen kann man die Form dieser Tags auch verändern (siehe ). + linkend="dokumentenvorlagen-und-variablen.tag-style" />). Früher wurde hier nur über LaTeX gesprochen. Inzwischen unterstützt Lx-Office aber auch OpenDocument-Vorlagen. Sofern es nicht @@ -1920,7 +2109,7 @@ insserv lx-office-task-server Die kurzen Varianten dieser Vorlagentitel müssen dann entweder Standardwerte anzeigen, oder die angeforderten Werte selbst auswerten, siehe dazu . + linkend="dokumentenvorlagen-und-variablen.allgemeine-variablen.meta" />. @@ -4216,27 +4405,29 @@ Beschreibung: <%description%> SQL-Ledger hat fast alles im globalen namespace abgelegt, und erwartet, dass es da auch wiederzufinden ist. - Unter FCGI müssen diese Sachen auch wieder + Unter FCGI müssen diese Sachen aber wieder aufgeräumt werden, damit sie nicht in den nächsten Request kommen. Einige Sachen wiederum sollen nicht gelöscht werden, wie zum Beispiel - Datenbankverbindungen, weil die ne Ewigkeit zum initialisieren + Datenbankverbindungen, weil die sehr lange zum Initialisieren brauchen. Das zweite Problem ist strict. Unter strict werden alle Variablen die nicht explizit mit Package, my oder our angegeben werden als Tippfehler angemarkert, - was einen vor so mancher Stunde suchen nach einem Bug erspart. Da - globale Variablen aber implizit mit Package angegeben werden, werden - die nicht geprüft, und ein Tippfehler da fällt niemandem auf. + 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. Kanonische globale Variablen Um dieses Problem im Griff zu halten gibt es einige wenige - globale Variablen, die kanonisch sind, und alles andere sollte - anderweitig umhergereicht werden. + globale Variablen, die kanonisch sind, d.h. sie haben bestimmte + vorgegebenen Eigenschaften, und alles andere sollte anderweitig + umhergereicht werden. Diese Variablen sind im Moment die folgenden neun: @@ -4278,8 +4469,9 @@ Beschreibung: <%description%> - Damit diese nicht als Müllhalde misbrauch werden, im Folgenden - eine kurze Erläuterung was man von denn erwarten kann. + Damit diese nicht erneut als Müllhalde missbraucht werden, im + Folgenden eine kurze Erläuterung der bestimmten vorgegebenen + Eigenschaften (Konventionen): $::form @@ -4313,14 +4505,26 @@ Beschreibung: <%description%> $::form wurde unter SQL Ledger als Gottobjekt für alles misbraucht. Sämtliche alten Funktionen unter SL/ mutieren $::form, das - heißt, alles was einem lieb ist, sollte man vor einem Aufruf von zum - Beispiel IS->retrieve_customer() in - Sicherheit bringen. + heißt, alles was einem lieb ist (alle Variablen die einem ans Herz + gewachsen sind), sollte man vor einem Aufruf (!) von zum Beispiel + IS->retrieve_customer() in Sicherheit + bringen. + + 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: + + my $saved_numberformat = $::myconfig{numberformat}; + $::myconfig{numberformat} = $numberformat; + # (...) div Berechnungen + $::myconfig{numberformat} = $saved_numberformat; Das Objekt der Klasse Form hat leider im Moment noch viele - zentrale Funktionen Gdie vom internen Zustand abhängen, deshalb - bitte nie einfach zerstören oder überschreiben. Es geht ziemlich - sicher etwas kaputt. + 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. $::form ist gleichzeitig der Standard Scope in den Template::Toolkit Templates @@ -4330,9 +4534,35 @@ Beschreibung: <%description%> Zugriff [% FORM.var %]. In Druckvorlagen sind normale Variablen ebenfall im $::form Scope, d.h. <%var%> zeigt auf - $::form->{var}. Innerhalb von Schleifen wird + $::form->{var}. Nochmal von der anderen Seite + erläutert, innerhalb von (Web-)Templates sieht man häufiger solche + Konstrukte: + + [%- IF business %] +# (... Zeig die Auswahlliste Kunden-/Lieferantentyp an) +[%- END %] + + Entweder wird hier dann $::form->{business} ausgewertet + oder aber der Funktion + $form->parse_html_template wird explizit + noch ein zusätzlicher Hash übergeben, der dann auch in den + (Web-)Templates zu Verfügung steht, bspw. so: + + $form->parse_html_template("is/form_header", \%TMPL_VAR); + + Innerhalb von Schleifen wird $::form->{TEMPLATE_ARRAYS}{var}[$index] - bevorzugt, wenn vorhanden. + bevorzugt, wenn vorhanden. Ein Beispiel findet sich in SL/DO.pm, + welches über alle Positionen eines Lieferscheins in Schleife + läuft: + + for $i (1 .. $form->{rowcount}) { + # ... + push @{ $form->{TEMPLATE_ARRAYS}{runningnumber} }, $position; + push @{ $form->{TEMPLATE_ARRAYS}{number} }, $form->{"partnumber_$i"}; + push @{ $form->{TEMPLATE_ARRAYS}{description} }, $form->{"description_$i"}; + # ... +} @@ -4359,7 +4589,7 @@ Beschreibung: <%description%> Sollte nicht ohne Filterung irgendwo gedumpt werden oder extern serialisiert werden, weil da auch der Datenbankzugriff - für diesenuser drinsteht. + für diesen user drinsteht. @@ -4375,7 +4605,11 @@ Beschreibung: <%description%> %::myconfig ist im Moment der Ersatz für ein Userobjekt. Die meisten Funktionen, die etwas anhand des aktuellen Users entscheiden müssen, befragen - %::myconfig. + %::myconfig. Innerhalb der Anwendungen sind dies + überwiegend die Daten, die sich unter Programm + -> Einstellungen befinden, bzw. die + Informationen über den Benutzer die über die + Administrator-Schnittstelle (admin.pl) eingegeben wurden. @@ -4429,7 +4663,13 @@ Beschreibung: <%description%> brauchbares Tracing gebaut ist, "log_time", mit der man die Wallclockzeit seit Requeststart loggen kann, sowie "message" und "dump" mit - denen man flott Informationen ins Log packen kann. + denen man flott Informationen ins Log (tmp/lx-office-debug.log) + packen kann. + + Beispielsweise so: + + $main::lxdebug->message(0, 'Meine Konfig:' . Dumper (%::myconfig)); +$main::lxdebug->message(0, 'Wer bin ich? Kunde oder Lieferant:' . $form->{vc}); @@ -4479,14 +4719,16 @@ Beschreibung: <%description%> - Globale Konfiguration. Configdateien werden zum Start gelesen, - und nicht mehr angefasst. Es ist derzeit nicht geplant, dass das - Programm die Konfiguration ändern kann oder sollte. + 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. - Für die folgende Konfigurationsdatei: + Beispielsweise ist über den Konfigurationseintrag [debug] die + Debug- und Trace-Log-Datei wie folgt konfiguriert und + verfügbar: [debug] -file = /tmp/lxoffice_debug_log.txt +file = /tmp/lx-office-debug.log ist der Key file im Programm als $::lx_office_conf->{debug}{file} @@ -4514,9 +4756,9 @@ file = /tmp/lxoffice_debug_log.txt Funktioniert wie $::lx_office_conf, speichert aber Daten die von der Instanz abhängig sind. Eine Instanz - ist hier eine Mandantendatenbank. Prominentestes Datum ist "eur", - die Information ob Bilanz oder Einnahmenüberschussrechnung gemacht - wird. + ist hier eine Mandantendatenbank. Beispielsweise überprüft + $::instance_conf->get_inventory_system eq 'perpetual' + ob die berüchtigte Bestandsmethode zur Anwendung kommt. @@ -4572,16 +4814,19 @@ file = /tmp/lxoffice_debug_log.txt - Kommt es vom User, und soll unverändert wieder an den User? Dann $::form, steht da eh schon + Kommt es vom User, und soll unverändert wieder an den + User? Dann $::form, steht da eh schon - Sind es Daten aus der Datenbank, die nur bis zum Ende des Requests gebraucht werden? Dann + Sind es Daten aus der Datenbank, die nur bis zum Ende des + Requests gebraucht werden? Dann $::request - Muss ich von anderen Teilen des Programms lesend drauf zugreifen? Dann $::request, aber Zugriff über + Muss ich von anderen Teilen des Programms lesend drauf + zugreifen? Dann $::request, aber Zugriff über Wrappermethode @@ -4753,208 +4998,231 @@ file = /tmp/lxoffice_debug_log.txt - SQL-Upgradedateien + SQL-Upgradedateien - - Einführung + + Einführung - - 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. - + 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. + + 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. + + 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. + + 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. + - - 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. - + + Format der Kontrollinformationen - - 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. - + Die Kontrollinformationen sollten sich am Anfang der jeweiligen + Upgradedatei befinden. Jede Zeile, die Kontrollinformationen enthält, + hat dabei das folgende Format: - - 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. - - + Für SQL-Upgradedateien: - - Format der Kontrollinformationen + -- @key: value - - Die Kontrollinformationen sollten sich am Anfang der jeweiligen Upgradedatei befinden. Jede Zeile, die Kontrollinformationen enthält, - hat dabei das folgende Format: - + Für Perl-Upgradedateien: - - Für SQL-Upgradedateien: - + # @key: value - -- @key: value + Leerzeichen vor "value" werden + entfernt. - - Für Perl-Upgradedateien: - + Die folgenden Schlüsselworte werden verarbeitet: - # @key: value + + + tag - - Leerzeichen vor "value" werden entfernt. - + + Wird zwingend benötigt. Dies ist der "Name" des Upgrades. + Dieser "tag" kann von anderen Kontrolldateien in ihren + Abhängigkeiten verwendet werden (Schlüsselwort + "depends"). Der "tag" ist auch der Name, der + in der Datenbank eingetragen wird. + + Normalerweise sollte die Kontrolldatei genau so heißen wie + der "tag", nur mit der Endung ".sql" bzw. "pl". + + Ein Tag darf nur aus alphanumerischen Zeichen sowie den + Zeichen _ - ( ) bestehen. Insbesondere sind Leerzeichen nicht + erlaubt und sollten stattdessen mit Unterstrichen ersetzt + werden. + + - - Die folgenden Schlüsselworte werden verarbeitet: - + + charset - - - tag - - - Wird zwingend benötigt. Dies ist der "Name" des Upgrades. Dieser "tag" kann von anderen Kontrolldateien in ihren Abhängigkeiten - verwendet werden (Schlüsselwort "depends"). Der "tag" ist auch der Name, der in der Datenbank eingetragen wird. - - - - Normalerweise sollte die Kontrolldatei genau so heißen wie der "tag", nur mit der Endung ".sql" bzw. "pl". - - - - Ein Tag darf nur aus alphanumerischen Zeichen sowie den Zeichen _ - ( ) bestehen. Insbesondere sind Leerzeichen nicht erlaubt und - sollten stattdessen mit Unterstrichen ersetzt werden. - - - + + Empfohlen. Gibt den Zeichensatz an, in dem das Script + geschrieben wurde, z.B. "UTF-8". Aus + Kompatibilitätsgründen mit alten Upgrade-Scripten wird bei + Abwesenheit des Tags der Zeichensatz + "ISO-8859-15" angenommen. + + - - charset - - - Empfohlen. Gibt den Zeichensatz an, in dem das Script geschrieben wurde, z.B. "UTF-8". Aus - Kompatibilitätsgründen mit alten Upgrade-Scripten wird bei Abwesenheit des Tags der Zeichensatz "ISO-8859-15" - angenommen. - - - + + description - - description - - - 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. - - - + + 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. + + - - depends - - - 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. - - - - 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. - - - - Es ist nicht erlaubt, sich selbst referenzierende Abhängigkeiten zu definieren (z.B. "a" -> "b", - "b" -> "c" und "c" -> "a"). - - - + + depends - - priority - - - 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. - - - - 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". - - - - - + + 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. + + 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. + + Es ist nicht erlaubt, sich selbst referenzierende + Abhängigkeiten zu definieren (z.B. "a" -> "b", "b" -> "c" + und "c" -> "a"). + + - - Hilfsscript dbupgrade2_tool.pl + + priority - - Um die Arbeit mit den Abhängigkeiten etwas zu erleichtern, existiert ein Hilfsscript namens - "scripts/dbupgrade2_tool.pl". Es muss aus dem Lx-Office-ERP-Basisverzeichnis heraus aufgerufen werden. Dieses - Tool liest alle Datenbankupgradescripte aus dem Verzeichnis sql/Pg-upgrade2 aus. Es benutzt dafür die gleichen - Methoden wie Lx-Office selber, sodass alle Fehlersituationen von der Kommandozeile überprüft werden können. - + + 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. + + 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". + + - - 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: - + + ignore - - - Listenform: "./scripts/dbupgrade2_tool.pl --list" + + Optional. Falls der Wert auf 1 (true) steht, wird das + Skript bei der Anmeldung ignoriert und entsprechend nicht + ausgeführt. + + + + - - 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. - - + + Hilfsscript dbupgrade2_tool.pl - - Baumform: "./scripts/dbupgrade2_tool.pl --tree" + Um die Arbeit mit den Abhängigkeiten etwas zu erleichtern, + existiert ein Hilfsscript namens + "scripts/dbupgrade2_tool.pl". Es muss aus dem + Lx-Office-ERP-Basisverzeichnis heraus aufgerufen werden. Dieses Tool + liest alle Datenbankupgradescripte aus dem Verzeichnis + sql/Pg-upgrade2 aus. Es benutzt dafür die + gleichen Methoden wie Lx-Office selber, sodass alle Fehlersituationen + von der Kommandozeile überprüft werden können. - - 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. - - + 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: - - Umgekehrte Baumform: "./scripts/dbupgrade2_tool.pl --rtree" + + + Listenform: "./scripts/dbupgrade2_tool.pl + --list" - - 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. - - + 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. + - - Baumform mit Postscriptausgabe: "./scripts/dbupgrade2_tool.pl --graphviz" + + Baumform: "./scripts/dbupgrade2_tool.pl + --tree" + + 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. + - - Benötigt das Tool "graphviz", um mit seiner Hilfe die umgekehrte Baumform in eine Postscriptdatei namens - "db_dependencies.ps" 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. - - + + Umgekehrte Baumform: "./scripts/dbupgrade2_tool.pl + --rtree" - - - Scripte, von denen kein anderes Script abhängt: "./scripts/dbupgrade2_tool.pl --nodeps" - + 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. + - - Listet die Tags aller Scripte auf, von denen keine anderen Scripte abhängen. - - - - + + Baumform mit Postscriptausgabe: + "./scripts/dbupgrade2_tool.pl + --graphviz" + + Benötigt das Tool "graphviz", um mit + seiner Hilfe die umgekehrte + Baumform in eine Postscriptdatei namens + "db_dependencies.ps" 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. + + + + Scripte, von denen kein anderes Script abhängt: + "./scripts/dbupgrade2_tool.pl --nodeps" + + Listet die Tags aller Scripte auf, von denen keine anderen + Scripte abhängen. + + + @@ -5167,36 +5435,31 @@ filenames - + Stil-Richtlinien - - 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"). - + 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"). - - Diese Regeln sind keine Schikane sondern erleichtern allen das Leben! - + Diese Regeln sind keine Schikane sondern erleichtern allen das + Leben! - - Jeder, der einen Patch schickt, sollte seinen Code vorher überprüfen. Einige der Regeln lassen sich automatisch überprüfen, andere - nicht. - + Jeder, der einen Patch schickt, sollte seinen Code vorher + überprüfen. Einige der Regeln lassen sich automatisch überprüfen, andere + nicht. - - - Es werden keine echten Tabs sondern Leerzeichen verwendet. - - + + Es werden keine echten Tabs sondern Leerzeichen + verwendet. + - - - Die Einrückung beträgt zwei Leerzeichen. Beispiel: - + + Die Einrückung beträgt zwei Leerzeichen. Beispiel: - foreach my $row (@data) { + foreach my $row (@data) { if ($flag) { # do something with $row } @@ -5210,36 +5473,37 @@ filenames $report->add($row); } - + - - Öffnende geschweifte Klammern befinden sich auf der gleichen Zeile wie der letzte Befehl. Beispiele: + + Öffnende geschweifte Klammern befinden sich auf der gleichen + Zeile wie der letzte Befehl. Beispiele: - sub debug { + sub debug { ... } - oder + oder - if ($form->{item_rows} > 0) { + if ($form->{item_rows} > 0) { ... } - + - - - 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. - - + + 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. + - - - Die Wörter "else", "elsif", "while" befinden sich auf der gleichen - Zeile wie schließende geschweifte Klammern. Beispiele: - + + Die Wörter "else", + "elsif", "while" befinden + sich auf der gleichen Zeile wie schließende geschweifte Klammern. + Beispiele: - if ($form->{sum} > 1000) { + if ($form->{sum} > 1000) { ... } elsif ($form->{sum} > 0) { ... @@ -5250,89 +5514,83 @@ filenames do { ... } until ($a > 0); - + - - - Parameter von Funktionsaufrufen müssen mit runden Klammern versehen werden. Davon nicht betroffen sind interne Perl-Funktionen, - und grep-ähnliche Operatoren. Beispiel: - + + Parameter von Funktionsaufrufen müssen mit runden Klammern + versehen werden. Davon nicht betroffen sind interne Perl-Funktionen, + und grep-ähnliche Operatoren. Beispiel: - $main::lxdebug->message("Could not find file."); + $main::lxdebug->message("Could not find file."); %options = map { $_ => 1 } grep { !/^#/ } @config_file; - + - - - Verschiedene Klammern, Ihre Ausdrücke und Leerzeichen: - + + Verschiedene Klammern, Ihre Ausdrücke und Leerzeichen: - - Generell gilt: Hashkeys und Arrayindices sollten nicht durch Leerzeichen abgesetzt werden. Logische Klammerungen ebensowenig, - Blöcke schon. Beispiel: - + Generell gilt: Hashkeys und Arrayindices sollten nicht durch + Leerzeichen abgesetzt werden. Logische Klammerungen ebensowenig, + Blöcke schon. Beispiel: - if (($form->{debug} == 1) && ($form->{sum} - 100 < 0)) { + 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; - +map { $form->{sum} += $form->{"row_$_"} } 1..$rowcount; + - - - Mehrzeilige Befehle - + + Mehrzeilige Befehle - - - - 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: - + + + 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: - $sth = $dbh->prepare("SELECT * FROM some_table WHERE col = ?", + $sth = $dbh->prepare("SELECT * FROM some_table WHERE col = ?", $form->{some_col_value}); - + - - - Ein Spezialfall ist der ternäre Oprator "?:", der am besten in einer übersichtlichen Tabellenstruktur organisiert - wird. Beispiel: - + + Ein Spezialfall ist der ternäre Oprator "?:", der am + besten in einer übersichtlichen Tabellenstruktur organisiert + wird. Beispiel: - my $rowcount = $form->{"row_$i"} ? $i + my $rowcount = $form->{"row_$i"} ? $i : $form->{oldcount} ? $form->{oldcount} + 1 : $form->{rowcount} - $form->{rowbase}; - - - + + + - - - Kommentare - + + Kommentare - - - Kommentare, die alleine in einer Zeile stehen, sollten soweit wie der Code eingerückt sein. - + + + Kommentare, die alleine in einer Zeile stehen, sollten + soweit wie der Code eingerückt sein. + - - Seitliche hängende Kommentare sollten einheitlich formatiert werden. - + + Seitliche hängende Kommentare sollten einheitlich + formatiert werden. + - - - 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: - + + 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: - my $found = 0; + my $found = 0; while (1) { last if $found; @@ -5344,181 +5602,178 @@ $i = 0 # initialize $i $n = $i; # save $i $i *= $const; # do something crazy $i = $n; # recover $i - - - + + + - - - Hashkeys sollten nur in Anführungszeichen stehen, wenn die Interpolation gewünscht ist. Beispiel: - + + Hashkeys sollten nur in Anführungszeichen stehen, wenn die + Interpolation gewünscht ist. Beispiel: - $form->{sum} = 0; -$form->{"row_$i"} = $form->{"row_$i"} - 5; + $form->{sum} = 0; +$form->{"row_$i"} = $form->{"row_$i"} - 5; $some_hash{42} = 54; - - - - - Die maximale Zeilenlänge ist nicht bescränkt. Zeilenlängen unterhalb von 79 Zeichen helfen unter bestimmten Bedingungen, aber - wenn die Lesbarkeit unter kurzen Zeilen leidet (wie zum Biespiel in grossen Tabellen), dann ist Lesbarkeit vorzuziehen. - - - - Als Beispiel sei die Funktion print_options aus bin/mozilla/io.pl angeführt. - - - - - - Trailing Whitespace, d.h. Leerzeichen am Ende von Zeilen sind unerwünscht. Sie führen zu unnötigen Whitespaceänderungen, die - diffs verfälschen. - - - - Emacs und vim haben beide recht einfache Methoden zur Entfernung von trailing whitespace. Emacs kennt das Kommande - nuke-trailing-whitespace, vim macht das gleiche manuell über :%s/\s\+$//e Mit :au - BufWritePre * :%s/\s\+$//e wird das an Speichern gebunden. - - + - - - Es wird kein perltidy verwendet. - + + 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. + + Als Beispiel sei die Funktion + print_options aus + bin/mozilla/io.pl angeführt. + - - In der Vergangenheit wurde versucht, perltidy zu verwenden, um einen einheitlichen Stil zu erlangen. Es hat - sich aber gezeigt, dass perltidys sehr eigenwilliges Verhalten, was Zeilenumbrüche angeht, oftmals gut - formatierten Code zerstört. Für den Interessierten sind hier die perltidy-Optionen, die grob den - beschriebenen Richtlinien entsprechen: - + + Trailing Whitespace, d.h. Leerzeichen am Ende von Zeilen sind + unerwünscht. Sie führen zu unnötigen Whitespaceänderungen, die diffs + verfälschen. + + Emacs und vim haben beide recht einfache Methoden zur + Entfernung von trailing whitespace. Emacs kennt das Kommande + nuke-trailing-whitespace, vim macht das gleiche + manuell über :%s/\s\+$//e Mit :au + BufWritePre * :%s/\s\+$//e wird das an Speichern + gebunden. + - -syn -i=2 -nt -pt=2 -sbt=2 -ci=2 -ibc -hsc -noll -nsts -nsfs -asc -dsm + + Es wird kein perltidy verwendet. + + In der Vergangenheit wurde versucht, + perltidy zu verwenden, um einen einheitlichen + Stil zu erlangen. Es hat sich aber gezeigt, dass + perltidys sehr eigenwilliges Verhalten, was + Zeilenumbrüche angeht, oftmals gut formatierten Code zerstört. Für + den Interessierten sind hier die + perltidy-Optionen, die grob den beschriebenen + Richtlinien entsprechen: + + -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 - - - - - STDERR ist tabu. Unkonditionale Debugmeldungen auch. - - - - Lx-Office bietet mit dem Modul LXDebug einen brauchbaren Trace-/Debug-Mechanismus. Es gibt also keinen - Grund, nach STDERR zu schreiben. - + - - Die LXDebug-Methode "message" 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. - - + + STDERR ist tabu. Unkonditionale + Debugmeldungen auch. + + Lx-Office bietet mit dem Modul LXDebug + einen brauchbaren Trace-/Debug-Mechanismus. Es gibt also keinen + Grund, nach STDERR zu schreiben. + + Die LXDebug-Methode + "message" 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. + - - - Alle neuen Module müssen use strict verwenden. - + + Alle neuen Module müssen use strict verwenden. - - $form, $auth, $locale, $lxdebug und - %myconfig werden derzeit aus dem main package importiert (siehe . Alle anderen - Konstrukte sollten lexikalisch lokal gehalten werden. - - + $form, $auth, + $locale, $lxdebug und + %myconfig werden derzeit aus dem main package + importiert (siehe . Alle anderen + Konstrukte sollten lexikalisch lokal gehalten werden. + - Dokumentation erstellen + Dokumentation erstellen - - Einführung + + Einführung - - Diese Dokumentation ist in DocBook 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 - DocBook mitbringt. Wir empfehlen dafür den XMLmind XML - Editor, der bei nicht kommerzieller Nutzung kostenlos ist. - - + Diese Dokumentation ist in DocBook + 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 + DocBook mitbringt. Wir empfehlen dafür den + XMLmind XML + Editor, der bei nicht kommerzieller Nutzung kostenlos + ist. + - - Benötigte Software + + Benötigte Software - - Bei DocBook 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 - scripts/build_doc.sh. - + Bei DocBook 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 + scripts/build_doc.sh. - - Das Script benötigt zur Konvertierung verschiedene Softwarekomponenten, die im normalen Lx-Office-Betrieb nicht benötigt werden: - + Das Script benötigt zur Konvertierung verschiedene + Softwarekomponenten, die im normalen Lx-Office-Betrieb nicht benötigt + werden: - - - - Java in einer halbwegs aktuellen Version - - + + + Java + in einer halbwegs aktuellen Version + - - - Das Java-Build-System Apache Ant - - + + Das Java-Build-System Apache Ant + - - - Das Dokumentations-System Dobudish für DocBook 4.5, eine Zusammenstellung diverser Stylesheets und - Grafiken zur Konvertierung von DocBook XML in andere Formate. Das Paket, das benötigt wird, ist zum - Zeitpunkt der Dokumentationserstellung dobudish-nojre-1.1.4.zip, aus auf code.google.com bereitsteht. - - - + + Das Dokumentations-System Dobudish für + DocBook 4.5, eine Zusammenstellung + diverser Stylesheets und Grafiken zur Konvertierung von + DocBook XML in andere Formate. Das + Paket, das benötigt wird, ist zum Zeitpunkt der + Dokumentationserstellung + dobudish-nojre-1.1.4.zip, aus auf code.google.com + bereitsteht. + + - - Apache Ant sowie ein dazu passendes Java Runtime Environment sind auf allen gängigen Plattformen verfügbar. Beispiel für - Debian/Ubuntu: - + Apache Ant sowie ein dazu passendes Java Runtime Environment + sind auf allen gängigen Plattformen verfügbar. Beispiel für + Debian/Ubuntu: - apt-get install ant openjdk-7-jre + apt-get install ant openjdk-7-jre - - Nach dem Download von Dobudish muss Dobudish im Unterverzeichnis doc/build entpackt werden. Beispiel unter der - Annahme, das Dobudish in $HOME/Downloads heruntergeladen wurde: - + Nach dem Download von Dobudish muss Dobudish im Unterverzeichnis + doc/build entpackt werden. Beispiel unter der + Annahme, das Dobudish in + $HOME/Downloads heruntergeladen wurde: - cd doc/build + cd doc/build unzip $HOME/Downloads/dobudish-nojre-1.1.4.zip - + - - PDFs und HTML-Seiten erstellen + + PDFs und HTML-Seiten erstellen - - Die eigentliche Konvertierung erfolgt nach Installation der benötigten Software mit einem einfachen Aufruf direkt aus dem - Lx-Office-Installationsverzeichnis heraus: - + Die eigentliche Konvertierung erfolgt nach Installation der + benötigten Software mit einem einfachen Aufruf direkt aus dem + Lx-Office-Installationsverzeichnis heraus: - ./scripts/build_doc.sh - + ./scripts/build_doc.sh + - - Einchecken in das Git-Repository + + Einchecken in das Git-Repository - - 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. - + 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. - - Die "dobudish"-Verzeichnisse bzw. symbolischen Links gehören hingegen nicht in das Repository. - - + Die "dobudish"-Verzeichnisse bzw. + symbolischen Links gehören hingegen nicht in das Repository. +