X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=doc%2Fdokumentation.xml;h=51f9549cb9f4956a32f825f1a563380f801e0eca;hb=1d38d96daeba662c592ba3529144c8f195ce095f;hp=e7547b153bb37f5773b16fca04ebf1cb34e7805b;hpb=d575e646f595765c667107f8758867280b3bf1a6;p=kivitendo-erp.git diff --git a/doc/dokumentation.xml b/doc/dokumentation.xml index e7547b153..51f9549cb 100644 --- a/doc/dokumentation.xml +++ b/doc/dokumentation.xml @@ -2,7 +2,7 @@ - kivitendo: Installation, Konfiguration, Entwicklung + kivitendo 3.0.0: Installation, Konfiguration, Entwicklung Aktuelle Hinweise @@ -14,12 +14,57 @@ im kivitendo-Forum: https://forum.kivitendo.org/ + + in der doc/UPGRADE Datei im doc-Verzeichnis der Installation + + + Im Schulungs- und Dienstleistungsangebot der entsprechenden kivitendo-Partner: http://www.kivitendo.de/partner.html + Installation und Grundkonfiguration + + Übersicht + + + Die Installation von kivitendo umfasst mehrere Schritte. Die folgende Liste kann sowohl für Neulinge als auch für alte Hasen als + Übersicht und Stichpunktliste zum Abhaken dienen, um eine Version mit minimalen Features möglichst schnell zum Laufen zu kriegen. + + + + Voraussetzungen überprüfen: kivitendo benötigt gewisse Ressourcen und benutzt weitere + Programme. Das Kapitel "" erläutert diese. Auch die Liste der benötigten Perl-Module + befindet sich hier. + + Installation von kivitendo: Diese umfasst die "" sowie grundlegende Einstellungen, die der "" erläutert. + + Konfiguration externer Programme: hierzu gehören die Datenbank ("") und der Webserver (""). + + Benutzerinformationen speichern können: man benötigt mindestens eine Datenbank, in der + Informationen zur Authentifizierung sowie die Nutzdaten gespeichert werden. Wie man das als Administrator macht, verrät "". + + Benutzer, Gruppen und Datenbanken anlegen: wie dies alles zusammenspielt erläutert "". + + Los geht's: alles soweit erledigt? Dann kann es losgehen: "" + + + + Alle weiteren Unterkapitel in diesem Kapitel sind ebenfalls wichtig und dienen sollten vor einer ernsthaften Inbetriebnahme gelesen + werden. + + + Benötigte Software und Pakete @@ -33,7 +78,7 @@ ohne große Probleme auf den derzeit aktuellen verbreiteten Distributionen läuft. - Mitte 2012 sind das folgende Systeme, von denen bekannt ist, + Anfang 2014 sind das folgende Systeme, von denen bekannt ist, dass kivitendo auf ihnen läuft: @@ -42,20 +87,20 @@ Debian - 6.0 Squeeze (hier muss allerdings das Modul FCGI in der Version >= 0.72 compiled werden) + 6.0 "Squeeze" (hier muss allerdings das Modul FCGI in der Version >= 0.72 compiled werden, und Rose::DB::Object ist zu alt) - 7.0 Wheezy + 7.0 "Wheezy" - Ubuntu 10.04 LTS Lucid Lynx bis 12.10 Oneiric Ocelot + Ubuntu 12.04 LTS "Precise Pangolin", 12.10 "Quantal Quetzal", 13.04 "Precise Pangolin" und 14.04 "Trusty Tahr" LTS Alpha - openSUSE 11.2 und 11.3 + openSUSE 12.2, 12.3 und 13.1 @@ -63,23 +108,28 @@ - Fedora 13 bis 16 + Fedora 16 bis 19 - Pakete + Benötigte Perl-Pakete installieren Zum Betrieb von kivitendo werden zwingend ein Webserver (meist - Apache) und ein Datenbankserver (PostgreSQL, mindestens v8.2) + Apache) und ein Datenbankserver (PostgreSQL, mindestens v8.4) benötigt. - Zusätzlich benötigt kivitendo die folgenden Perl-Pakete, die - nicht Bestandteil einer Standard-Perl-Installation sind: + Zusätzlich benötigt kivitendo einige Perl-Pakete, die nicht Bestandteil einer Standard-Perl-Installation sind. Um zu + überprüfen, ob die erforderlichen Pakete installiert und aktuell genug sind, wird ein Script mitgeliefert, das wie folgt aufgerufen + wird: + + ./scripts/installation_check.pl + + Die vollständige Liste der benötigten Perl-Module lautet: - parent + parent (nur bei Perl vor 5.10.1) Archive::Zip @@ -95,6 +145,10 @@ Email::MIME + FCGI (nicht Versionen 0.68 bis 0.71 inklusive; siehe ) + + File::Copy::Recursive + JSON List::MoreUtils @@ -113,7 +167,7 @@ Rose::DB - Rose::DB::Object + Rose::DB::Object Version 0.788 oder neuer Template @@ -128,6 +182,8 @@ YAML + Seit v3.0.0 sind die folgenden Pakete hinzugekommen: File::Copy::Recursive. + Seit v2.7.0 sind die folgenden Pakete hinzugekommen: Email::MIME, Net::SMTP::SSL, Net::SSLGlue. @@ -152,40 +208,62 @@ empfohlen diese Module zusammen mit den anderen als Bibliotheken zu installieren. - Die zu installierenden Pakete können in den verschiedenen - Distributionen unterschiedlich heißen. - - Für Debian oder Ubuntu benötigen Sie diese Pakete: + + Debian und Ubuntu + + Alle benötigten Perl-Pakete stehen für Debian und Ubuntu als Debian-Pakete zur Verfügung. Sie können mit folgendem Befehl + installiert werden: + + apt-get install apache2 libarchive-zip-perl libclone-perl \ + libconfig-std-perl libdatetime-perl libdbd-pg-perl libdbi-perl \ + libemail-address-perl libemail-mime-perl libfcgi-perl libjson-perl \ + liblist-moreutils-perl libnet-smtp-ssl-perl libnet-sslglue-perl \ + libparams-validate-perl libpdf-api2-perl librose-db-object-perl \ + librose-db-perl librose-object-perl libsort-naturally-perl \ + libstring-shellquote-perl libtemplate-perl libtext-csv-xs-perl \ + libtext-iconv-perl liburi-perl libxml-writer-perl libyaml-perl \ + libfile-copy-recursive-perl postgresql + - apt-get install apache2 postgresql libparent-perl libarchive-zip-perl \ - libdatetime-perl libdbi-perl libdbd-pg-perl libpg-perl \ - libemail-address-perl libemail-mime-perl liblist-moreutils-perl libpdf-api2-perl \ - librose-object-perl librose-db-perl librose-db-object-perl \ - libtemplate-perl libtext-csv-xs-perl libtext-iconv-perl liburi-perl \ - libxml-writer-perl libyaml-perl libconfig-std-perl \ - libparams-validate-perl libjson-perl libclass-accessor-perl \ - libnet-sslglue-perl libnet-smtp-ssl-perl + + Fedora Core - Für Fedora Core benötigen Sie diese Pakete: + Für Fedora Core stehen die meisten der benötigten Perl-Pakete als RPM-Pakete zur Verfügung. Sie können mit folgendem Befehl installeirt werden: - yum install httpd postgresql-server perl-parent perl-DateTime \ - perl-DBI perl-DBD-Pg perl-Email-Address perl-Email-MIME perl-List-MoreUtils \ - perl-PDF-API2 perl-Rose-Object perl-Rose-DB perl-Rose-DB-Object \ + yum install httpd perl-Archive-Zip perl-Clone perl-DBD-Pg \ + perl-DBI perl-DateTime perl-Email-Address perl-Email-MIME perl-FCGI \ + perl-File-Copy-Recursive perl-JSON perl-List-MoreUtils perl-Net-SMTP-SSL perl-Net-SSLGlue \ + perl-PDF-API2 perl-Params-Validate perl-Rose-DB perl-Rose-DB-Object \ + perl-Rose-Object perl-Sort-Naturally perl-String-ShellQuote \ perl-Template-Toolkit perl-Text-CSV_XS perl-Text-Iconv perl-URI \ - perl-XML-Writer perl-YAML perl-Net-SSLGlue perl-Net-SMTP-SSL + perl-XML-Writer perl-YAML perl-parent postgresql-server - Für OpenSuSE benötigen Sie diese Pakete: + Zusätzlich müssen einige Pakete aus dem CPAN installiert werden. Dazu können Sie die folgenden Befehle nutzen: - zypper install apache2 postgresql-server perl-Archive-Zip \ - perl-DateTime perl-DBI perl-DBD-Pg perl-Email-MIME perl-MailTools perl-List-MoreUtils \ - perl-PDF-API2 perl-Template-Toolkit perl-Text-CSV_XS perl-Text-Iconv \ - perl-URI perl-XML-Writer perl-YAML perl-Net-SSLGlue perl-Net-SMTP-SSL + yum install perl-CPAN +cpan Config::Std - kivitendo enthält ein Script, mit dem überprüft werden kann, ob - alle benötigten Perl-Module installiert sind. Der Aufruf lautet wie - folgt: + - ./scripts/installation_check.pl + + openSUSE + + Für openSUSE stehen die meisten der benötigten Perl-Pakete als RPM-Pakete zur Verfügung. Sie können mit folgendem Befehl + installiert werden: + + zypper install apache2 perl-Archive-Zip perl-Clone \ + perl-Config-Std perl-DBD-Pg perl-DBI perl-DateTime perl-Email-Address \ + perl-Email-MIME perl-FastCGI perl-File-Copy-Recursive perl-JSON perl-List-MoreUtils \ + perl-Net-SMTP-SSL perl-Net-SSLGlue perl-PDF-API2 perl-Params-Validate \ + perl-Sort-Naturally perl-Template-Toolkit perl-Text-CSV_XS perl-Text-Iconv \ + perl-URI perl-XML-Writer perl-YAML postgresql-server + + Zusätzlich müssen einige Pakete aus dem CPAN installiert werden. Dazu können Sie die folgenden Befehle nutzen: + + yum install perl-CPAN +cpan Rose::Db::Object + + @@ -193,14 +271,11 @@ xreflabel="Manuelle Installation des Programmpaketes"> Manuelle Installation des Programmpaketes - Die kivitendo ERP Installationsdatei (kivitendo-erp-2.6.3.tgz) wird - im Dokumentenverzeichnis des Webservers (z.B. - /var/www/html/, - /srv/www/htdocs oder - /var/www/) entpackt: + Die kivitendo ERP Installationsdatei (kivitendo-erp-3.0.0.tgz) wird im Dokumentenverzeichnis des Webservers + (z.B. /var/www/html/, /srv/www/htdocs oder /var/www/) entpackt: cd /var/www -tar xvzf kivitendo-erp-2.6.3.tgz +tar xvzf kivitendo-erp-3.0.0.tgz Wechseln Sie in das entpackte Verzeichnis: @@ -213,7 +288,7 @@ tar xvzf kivitendo-erp-2.6.3.tgz 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). + core apache oder bei OpenSUSE wwwrun). Der folgende Befehl ändert den Besitzer für die oben genannten Verzeichnisse auf einem Debian/Ubuntu-System: @@ -283,15 +358,14 @@ tar xvzf kivitendo-erp-2.6.3.tgz system - features (siehe Kapitel "") - paths + mail_delivery (siehe Abschnitt ") + applications environment - mail_delivery (siehe Abschnitt ") print_templates @@ -299,8 +373,14 @@ tar xvzf kivitendo-erp-2.6.3.tgz periodic_invoices + self_tests + console + testing + + testing/database + debug @@ -315,22 +395,20 @@ host = localhost port = 5432 db = kivitendo_auth user = postgres -password = - -[system] -dbcharset = UTF-8 +password = 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 kivitendo bei der - Datenbank anmeldet, die dem Benutzer zugewiesen ist. + kivitendo bringt eine eigene Komponente zur zeitgesteuerten Ausführung bestimmter Aufgaben mit, den Taskserver. Er wird u.a. für Features wie die wiederkehrenden Rechnungen benötigt, erledigt aber auch andere erforderliche Aufgaben + und muss daher in Betrieb genommen werden. Der Taskserver benötigt zwei Konfigurationseinstellungen, die unter + [task_server] anzugeben sind: ein Mandant (entweder der Mandantenname oder eine Datenbank-ID, Variable + client), aus dem die Datenbankkonfiguration entnommen wird, sowie ein Login (Variable login) + eines Benutzers, der für gewisse Dinge wie die Rechnungserstellung als Verkäufer eingetragen wird. Für Entwickler finden sich unter [debug] wichtige Funktionen, um die Fehlersuche zu erleichtern. @@ -361,35 +439,30 @@ dbcharset = UTF-8 PostgreSQL muss auf verschiedene Weisen angepasst werden. - Zeichensätze/die Verwendung von UTF-8 + Zeichensätze/die Verwendung von Unicode/UTF-8 - Bei aktuellen Serverinstallationen braucht man hier meist nicht - eingreifen + kivitendo setzt zwingend voraus, dass die Datenbank Unicode/UTF-8 als Encoding einsetzt. Bei aktuellen Serverinstallationen + braucht man hier meist nicht einzugreifen. - Dieses kann überprüft werden: ist das Encoding der Datenbank - “template1” “UTF8”, so braucht man nichts weiteres diesbezüglich - unternehmen. Zum Testen: + Das Encoding des Datenbankservers kann überprüft werden. Ist das Encoding der Datenbank "template1" "Unicode" bzw. "UTF-8", so + braucht man nichts weiteres diesbezüglich unternehmen. Zum Testen: su postgres echo '\l' | psql exit - 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 + Andernfalls ist es notwendig, einen neuen Datenbankcluster mit + Unicode-Encoding anzulegen und diesen zu verwenden. Unter Debian und + Ubuntu kann dies z.B. für PostgreSQL 9.3 mit dem folgenden Befehl getan werden: - pg_createcluster --locale=de_DE.UTF-8 --encoding=UTF-8 8.2 clustername + pg_createcluster --locale=de_DE.UTF-8 --encoding=UTF-8 9.3 clustername Die Datenbankversionsnummer muss an die tatsächlich verwendete Versionsnummer angepasst werden. Unter anderen Distributionen gibt es ähnliche Methoden. - Wurde PostgreSQL nicht mit UTF-8 als Encoding initialisiert und - ist ein Neuanlegen eines weiteren Clusters nicht möglich, so kann - kivitendo mit ISO-8859-15 als Encoding betrieben werden. - Das Encoding einer Datenbank kann in psql mit \l geprüft werden. @@ -474,7 +547,7 @@ exit wird: AddHandler cgi-script .pl -Alias /kivitendo-erp/ /var/www/kiviteno-erp/ +Alias /kivitendo-erp/ /var/www/kivitendo-erp/ <Directory /var/www/kivitendo-erp> Options ExecCGI Includes FollowSymlinks @@ -612,7 +685,7 @@ Alias /url/for/kivitendo-erp/ /path/to/kivitendo-erp/ Deny from All </DirectoryMatch> - Seit mod_fcgid-Version 2.6.3 gelten sehr kleine Grenzen für + Seit mod_fcgid-Version 2.3.6 gelten sehr kleine Grenzen für die maximale Größe eines Requests. Diese sollte wie folgt hochgesetzt werden: @@ -664,12 +737,9 @@ Alias /url/for/kivitendo-erp-fcgid/ /path/to/kivitendo-erp/ Der Task-Server - Der Task-Server ist ein Prozess, der im Hintergrund läuft, in - regelmäßigen Abständen nach abzuarbeitenden Aufgaben sucht und diese zu - festgelegten Zeitpunkten abarbeitet (ähnlich wie Cron). Dieser Prozess - wird bisher nur für die Erzeugung der wiederkehrenden Rechnungen - benutzt, wird aber in Zukunft deutlich mehr Aufgaben übertragen - bekommen. + Der Task-Server ist ein Prozess, der im Hintergrund läuft, in regelmäßigen Abständen nach abzuarbeitenden Aufgaben sucht und + diese zu festgelegten Zeitpunkten abarbeitet (ähnlich wie Cron). Dieser Prozess wird u.a. für die Erzeugung der wiederkehrenden + Rechnungen und weitere essenzielle Aufgaben benutzt. Verfügbare und notwendige Konfigurationsoptionen @@ -680,14 +750,25 @@ Alias /url/for/kivitendo-erp-fcgid/ /path/to/kivitendo-erp/ + + client + + + Name oder Datenbank-ID eines vorhandenen kivitendo-Mandanten, der benutzt wird, um die zu verwendende + Datenbankverbindung auszulesen. Der Mandant muss in der Administration angelegt werden. Diese Option muss angegeben + werden. + + Diese Option kam mit Release v3.x.0 hinzu und muss daher in Konfigurationen, die von älteren Versionen aktualisiert + wurden, ergänzt werden. + + + login - gültiger kivitendo-Benutzername, der benutzt wird, um die - zu verwendende Datenbankverbindung auszulesen. Der Benutzer muss - in der Administration angelegt werden. Diese Option muss - angegeben werden. + gültiger kivitendo-Benutzername, der z.B. als Verkäufer beim Erzeugen wiederkehrender Rechnungen benötigt wird. Der + Benutzer muss in der Administration angelegt werden. Diese Option muss angegeben werden. @@ -730,8 +811,7 @@ Alias /url/for/kivitendo-erp-fcgid/ /path/to/kivitendo-erp/ - SystemV-basierende Systeme (z.B. Debian, OpenSuSE, Fedora - Core) + SystemV-basierende Systeme (z.B. Debian, ältere OpenSUSE, ältere Fedora Core) Kopieren Sie die Datei scripts/boot/system-v/kivitendo-server @@ -750,15 +830,16 @@ insserv kivitendo-task-server - OpenSuSE und Fedora Core: + Ältere OpenSUSE und ältere Fedora Core: chkconfig --add kivitendo-task-server Danach kann der Task-Server mit dem folgenden Befehl gestartet - werden: /etc/init.d/kivitendo-task-server - start + werden: + + /etc/init.d/kivitendo-task-server start @@ -771,8 +852,28 @@ insserv kivitendo-task-server exec ....). Danach kann der Task-Server mit dem folgenden Befehl gestartet - werden: service kivitendo-task-server - start + werden: + + service kivitendo-task-server start + + + + systemd-basierende Systeme (z.B. neure OpenSUSE, neuere Fedora Core) + + Verlinken Sie die Datei scripts/boot/systemd/kivitendo-task-server.service nach + /etc/systemd/system/. Passen Sie in der kopierten Datei den Pfad zum Task-Server an (Zeile + ExecStart=.... und ExecStop=...). Binden Sie das Script in den Boot-Prozess ein. + + + Alle hierzu benötigten Befehle sehen so aus: + + cd /var/www/kivitendo-erp/scripts/boot/systemd +ln -s $(pwd)/kivitendo-task-server.service /etc/systemd/system/ + + Danach kann der Task-Server mit dem folgenden Befehl gestartet + werden: + + systemctl start kivitendo-task-server.service @@ -818,13 +919,11 @@ insserv kivitendo-task-server Task-Server mit mehreren Mandanten - Beim Task-Server wird der Login-Name des Benutzers, unter dem der - Task-Server laufen soll, in die Konfigurationsdatei geschrieben. Hat - man mehrere Mandanten muß man auch mehrere Konfigurationsdateien - anlegen. + Beim Task-Server werden der zu verwendende Mandant und Login-Name des Benutzers, unter dem der Task-Server laufen soll, in die + Konfigurationsdatei geschrieben. Hat man mehrere Mandanten, muss man auch mehrere Konfigurationsdateien anlegen. - Die Konfigurationsdatei ist eine Kopie der Datei kivitendo.conf, - wo in der Kategorie [task_server] der gewünschte "login" steht. + Die Konfigurationsdatei ist eine Kopie der Datei kivitendo.conf, wo in der Kategorie [task_server] die + gewünschten Werte für client und login eingetragen werden. Der alternative Task-Server wird dann mit folgendem Befehl gestartet: @@ -1057,19 +1156,18 @@ insserv kivitendo-task-server der folgenden URL erreichbar sein sollte: http://localhost/kivitendo-erp/admin.pl + url="http://localhost/kivitendo-erp/controller.pl?action=Admin/login">http://localhost/kivitendo-erp/controller.pl?action=Admin/login - Benutzer- und Gruppenverwaltung + Mandanten-, Benutzer- und Gruppenverwaltung - Nach der Installation müssen Benutzer, Gruppen und Datenbanken - angelegt werden. Dieses geschieht im Administrationsmenü, das Sie unter - folgender URL finden: + Nach der Installation müssen Mandanten, Benutzer, Gruppen und Datenbanken angelegt werden. Dieses geschieht im + Administrationsmenü, das Sie unter folgender URL finden: http://localhost/kivitendo-erp/admin.pl + url="http://localhost/kivitendo-erp/controller.pl?action=Admin/login">http://localhost/kivitendo-erp/controller.pl?action=Admin/login Verwenden Sie zur Anmeldung das Password, dass Sie in der Datei config/kivitendo.conf eingetragen haben. @@ -1077,38 +1175,45 @@ insserv kivitendo-task-server Zusammenhänge - kivitendo verwendet eine Datenbank zum Speichern all seiner - Informationen wie Kundendaten, Artikel, Angebote, Rechnungen etc. Um - mit kivitendo arbeiten zu können, muss eine Person einen - Benutzeraccount haben. Jedem Benutzeraccount wiederum wird genau eine - Datenbank zugewiesen, mit der dieser Benutzer arbeiten kann. Es ist - möglich und normal, dass mehreren Benutzern die selbe Datenbank - zugewiesen wird, sodass sie alle mit den selben Daten arbeiten - können. - - Die Basisdaten der Benutzer, die in der Administration - eingegeben werden können, werden in einer zweiten Datenbank - gespeichert, der bereits erwähnten Authentifizierungsdatenbank. Diese - ist also den Produktivdaten enthaltenden Datenbanken vorgeschaltet. - Pro kivitendo-Installation gibt es nur eine - Authentifizierungsdatenbank, aber beliebig viele Datenbanken mit - Firmendaten. - - kivitendo kann seinen Benutzern Zugriff auf bestimmte - Funktionsbereiche erlauben oder verbieten. Wird der Zugriff nicht - gestattet, so werden der entsprechenden Menüpunkte auch nicht - angezeigt. Diese Rechte werden ebenfalls in der - Authentifizierungsdatenbank gespeichert. - - Um Rechte verteilen zu können, verwendet kivitendo ein - Gruppen-Prinzip. Einer Gruppe kann der Zugriff auf bestimmte Bereiche - erlaubt werden. Ein Benutzer wiederum kann Mitglied in einer oder - mehrerer Gruppen sein. Der Benutzer hat Zugriff auf alle diejenigen - Funktionen, die mindestens einer Gruppe erlaubt sind, in der der - Benutzer Mitglied ist. - - Die allgemeine Reihenfolge, in der Datenbanken, Gruppen und - Benutzer angelegt werden sollten, lautet: + kivitendo verwaltet zwei Sets von Daten, die je nach Einrichtung in einer oder zwei Datenbanken gespeichert werden. + + Das erste Set besteht aus Anmeldeinformationen: welche Benutzer und Mandanten gibt es, welche Gruppen, welche BenutzerIn hat + Zugriff auf welche Mandanten, und welche Gruppe verfügt über welche Rechte. Diese Informationen werden in der + Authentifizierungsdatenbank gespeichert. Dies ist diejenige Datenbank, deren Verbindungsparameter in der Konfigurationsdatei + config/kivitendo.conf gespeichert werden. + + Das zweite Set besteht aus den eigentlichen Verkehrsdaten eines Mandanten, wie beispielsweise die Stammdaten (Kunden, Lieferanten, Waren) und Belege + (Angebote, Lieferscheine, Rechnungen). Diese werden in einer Mandantendatenbank gespeichert. Die + Verbindungsinformationen einer solchen Mandantendatenbank werden im Administrationsbereich konfiguriert, indem man einen Mandanten + anlegt und dort die Parameter einträgt. Dabei hat jeder Mandant eine eigene Datenbank. + + Aufgrund des Datenbankdesigns ist es für einfache Fälle möglich, die Authentifizierungsdatenbank und eine der + Mandantendatenbanken in ein und derselben Datenbank zu speichern. Arbeitet man hingegen mit mehr als einem Mandanten, wird + empfohlen, für die Authentifizierungsdatenbank eine eigene Datenbank zu verwenden, die nicht gleichzeitig für einen Mandanten + verwendet wird. + + + + Mandanten, Benutzer und Gruppen + + kivitendos Administration kennt Mandanten, Benutzer und Gruppen, die sich frei zueinander zuordnen lassen. + + kivitendo kann mehrere Mandaten aus einer Installation heraus verwalten. Welcher Mandant benutzt wird, kann direkt beim Login + ausgewählt werden. Für jeden Mandanten wird ein eindeutiger Name vergeben, der beim Login angezeigt wird. Weiterhin benötigt der + Mandant Datenbankverbindungsparameter für seine Mandantendatenbank. Diese sollte über die Datenbankverwaltung geschehen. + + Ein Benutzer ist eine Person, die Zugriff auf kivitendo erhalten soll. Sie erhält einen Loginnamen sowie ein + Passwort. Weiterhin legt der Administrator fest, an welchen Mandanten sich ein Benutzer anmelden kann, was beim Login verifiziert + wird. + + Gruppen dienen dazu, Benutzern innerhalb eines Mandanten Zugriff auf bestimmte Funktionen zu geben. Einer Gruppe werden dafür + vom Administrator gewisse Rechte zugeordnet. Weiterhin legt der Administrator fest, für welche Mandanten eine Gruppe gilt, und + welche Benutzer Mitglieder in dieser Gruppe sind. Meldet sich ein Benutzer dann an einem Mandanten an, so erhält er alle Rechte von + allen denjenigen Gruppen, die zum Einen dem Mandanten zugeordnet sind und in denen der Benutzer zum Anderen Mitglied ist, + + Die Reihenfolge, in der Datenbanken, Mandanten, Gruppen und Benutzer angelegt werden, kann im Prinzip beliebig gewählt + werden. Die folgende Reihenfolge beinhaltet die wenigsten Arbeitsschritte: @@ -1120,11 +1225,11 @@ insserv kivitendo-task-server - Benutzer anlegen + Benutzer anlegen und Gruppen als Mitglied zuordnen - Benutzer den Gruppen zuordnen + Mandanten anlegen und Gruppen sowie Benutzer zuweisen @@ -1135,16 +1240,6 @@ insserv kivitendo-task-server Zuerst muss eine Datenbank angelegt werden. Verwenden Sie für den Datenbankzugriff den vorhin angelegten Benutzer (in unseren Beispielen ist dies ‘kivitendo’). - - Wenn Sie für die kivitendo-Installation nicht Unicode (UTF-8) sondern den europäischen Schriftsatz ISO-8859-15 benutzen - wollen, so müssen Sie vor dem Anlegen der Datenbank in der Datei config/kivitendo.conf die Variable - dbcharset im Abschnitt system auf den Wert ‘ISO-8859-15’ setzen. - - Bitte beachten Sie, dass alle Datenbanken den selben Zeichensatz - verwenden müssen, da diese Einstellungen momentan global in kivitendo - vorgenommen wird und nicht nach Datenbank unterschieden werden kann. - Auch die Authentifizierungsdatenbank muss mit diesem Zeichensatz - angelegt worden sein. @@ -1155,72 +1250,45 @@ insserv kivitendo-task-server Anlegen können Sie die verschiedenen Bereiche wählen, auf die Mitglieder dieser Gruppe Zugriff haben sollen. - Benutzergruppen sind unabhängig von Datenbanken, da sie in der - Authentifizierungsdatenbank gespeichert werden. Sie gelten für alle - Datenbanken, die in dieser Installation verwaltet werden. + Benutzergruppen werden zwar in der Authentifizierungsdatenbank gespeichert, gelten aber nicht automatisch für alle + Mandanten. Der Administrator legt vielmehr fest, für welche Mandanten eine Gruppe gültig ist. Dies kann entweder beim Bearbeiten der + Gruppe geschehen ("diese Gruppe ist gültig für Mandanten X, Y und Z"), oder aber wenn man einen Mandanten bearbeitet ("für diesen + Mandanten sind die Gruppen A, B und C gültig"). + + Wurden bereits Benutzer angelegt, so können hier die Mitglieder dieser Gruppe festgelegt werden ("in dieser Gruppe sind die + Benutzer X, Y und Z Mitglieder"). Dies kann auch nachträglich beim Bearbeiten eines Benutzers geschehen ("dieser Benutzer ist + Mitglied in den Gruppen A, B und C"). Benutzer anlegen - Beim Anlegen von Benutzern werden für viele Parameter - Standardeinstellungen vorgenommen, die den Gepflogenheiten des - deutschen Raumes entsprechen. + Beim Anlegen von Benutzern werden für viele Parameter Standardeinstellungen vorgenommen, die den Gepflogenheiten des deutschen + Raumes entsprechen. - Zwingend anzugeben sind der Loginname sowie die komplette - Datenbankkonfiguration. Wenn die Passwortauthentifizierung über die - Datenbank eingestellt ist, so kann hier auch das Benutzerpasswort - gesetzt bzw. geändert werden. Ist hingegen die LDAP-Authentifizierung - aktiv, so ist das Passwort-Feld deaktiviert. + Zwingend anzugeben ist der Loginname. Wenn die Passwortauthentifizierung über die Datenbank eingestellt ist, so kann hier auch + das Benutzerpasswort gesetzt bzw. geändert werden. Ist hingegen die LDAP-Authentifizierung aktiv, so ist das Passwort-Feld + deaktiviert. - In der Datenbankkonfiguration müssen die Zugriffsdaten einer der - eben angelegten Datenbanken eingetragen werden. + Hat man bereits Mandanten und Gruppen angelegt, so kann hier auch konfiguriert werden, auf welche Mandanten der Benutzer + Zugriff hat bzw. in welchen Gruppen er Mitglied ist. Beide Zuweisungen können sowohl beim Benutzer vorgenommen werden ("dieser + Benutzer hat Zugriff auf Mandanten X, Y, Z" bzw. "dieser Benutzer ist Mitglied in Gruppen X, Y und Z") als auch beim Mandanten ("auf + diesen Mandanten haben Benutzer A, B und C Zugriff") bzw. bei der Gruppe ("in dieser Gruppe sind Benutzer A, B und C + Mitglieder"). - - Gruppenmitgliedschaften verwalten - - Nach dem Anlegen von Benutzern und Gruppen müssen Benutzer den - Gruppen zugewiesen werden. Dazu gibt es zwei Möglichkeiten: - - - - In der Gruppenverwaltung wählt man eine Gruppe aus. Im - folgenden Dialog kann man dann einzeln die Benutzer der Gruppe - hinzufügen. - + + Mandanten anlegen - - In der Gruppenverwaltung wählt man das Tool zur Verwaltung - der Gruppenmitgliedschaft. Hier wird eine Matrix angezeigt, die - alle im System angelegten Gruppen und Benutzer enthält. Durch - Setzen der Häkchen wird der Benutzer in der ausgewählten Zeile der - Gruppe in der ausgewählten Spalte hinzugefügt. - - - + Ein Mandant besteht aus Administrationssicht primär aus einem eindeutigen Namen. Weiterhin wird hier hinterlegt, welche + Datenbank als Mandantendatenbank benutzt wird. Hier müssen die Zugriffsdaten einer der eben angelegten Datenbanken eingetragen + werden. - - Migration alter Installationen - - Wenn kivitendo 2.6.3 über eine ältere Version installiert wird, - in der die Benutzerdaten noch im Dateisystem im Verzeichnis - users verwaltet wurden, so bietet kivitendo die - Möglichkeit, diese Benutzerdaten automatisch in die - Authentifizierungsdatenbank zu übernehmen. Dies geschieht, wenn man - sich nach dem Update der Installation das erste Mal im - Administrationsbereich anmeldet. Findet kivitendo die Datei - users/members, so wird der Migrationsprozess - gestartet. - - Der Migrationsprozess ist nahezu vollautomatisch. Alle - Benutzerdaten können übernommen werden. Nach den Benutzerdaten bietet - kivitendo noch die Möglichkeit an, dass automatisch eine - Benutzergruppe angelegt wird. Dieser Gruppe wird Zugriff auf alle - Funktionen von kivitendo gewährt. Alle migrierten Benutzern werden - Mitglied in dieser Gruppe. Damit wird das Verhalten von kivitendo bis - Version 2.4.3 inklusive wiederhergestellt, und die Benutzer können - sich sofort wieder anmelden und mit dem System arbeiten. + Hat man bereits Benutzer und Gruppen angelegt, so kann hier auch konfiguriert werden, welche Benutzer Zugriff auf den + Mandanten haben bzw. welche Gruppen für den Mandanten gültig sind. Beide Zuweisungen können sowohl beim Mandanten vorgenommen werden + ("auf diesen Mandanten haben Benutzer X, Y und Z Zugriff" bzw. "für diesen Mandanten sind die Gruppen X, Y und Z gültig") als auch + beim Benutzer ("dieser Benutzer hat Zugriff auf Mandanten A, B und C") bzw. bei der Gruppe ("diese Gruppe ist für Mandanten A, B und + C gültig"). @@ -1299,11 +1367,11 @@ insserv kivitendo-task-server TLS-Verschlüsselung: Modul Net::SSLGlue (Debian-Paketname - libnet-sslglue-perl, Fedora Core: perl-Net-SSLGlue, openSuSE: + libnet-sslglue-perl, Fedora Core: perl-Net-SSLGlue, openSUSE: perl-Net-SSLGlue SSL-Verschlüsselung: Modul Net::SMTP::SSL (Debian-Paketname - libnet-smtp-ssl-perl, Fedora Core: perl-Net-SMTP-SSL, openSuSE: + libnet-smtp-ssl-perl, Fedora Core: perl-Net-SMTP-SSL, openSUSE: perl-Net-SMTP-SSL @@ -1330,24 +1398,30 @@ insserv kivitendo-task-server Vorlagenverzeichnis anlegen - Im Administrationsbereich lässt sich bei einem Benutzer/Mandanten einer dieser Vorlagensätze als Basis für die zu - druckenden Dokumente auswählen. Rufen Sie dazu die Benutzerverwaltung auf. + Es lässt sich ein initialer Vorlagensatz erstellen. Die LaTeX-System-Abhängigkeiten hierfür kann man prüfen mit: + + ./scripts/installation_check.pl -lv - Wählen Sie dort einen Benutzer aus oder legen Sie einen neuen an. In der Benutzerbearbeiten-Maske müssen Sie zwei Dinge - angeben: + Der Angemmeldete Benutzer muss in einer Gruppe sein, die über das + Recht "Konfiguration -> Mandantenverwaltung" verfügt. Siehe auch . + + Im Userbereich lässt sich unter: + "System -> + Mandantenverwaltung -> Verschiedenes" die Option + "Neue Druckvorlagen aus Vorlagensatz erstellen" auswählen. - : Der Verzeichnisname für den neuen Vorlagensatz. Dieser kann im Rahmen der üblichen - Bedingungen für Verzeichnisnamen frei gewählt werden. : Wählen Sie hier den Vorlagensatz aus, der kopiert werden soll (Standard, f-tex oder RB.) + : Der Verzeichnisname für den neuen Vorlagensatz. Dieser kann im Rahmen der üblichen + Bedingungen für Verzeichnisnamen frei gewählt werden. - Der gleiche Vorlagensatz kann, wenn er mal angelegt ist, bei mehreren Benutzern verwendet werden. + Nach dem Speichern wird das Vorlagenverzeichnis angelegt und ist für den aktuellen Mandanten ausgewählt. + Der gleiche Vorlagensatz kann, wenn er mal angelegt ist, bei mehreren Mandanten verwendet werden. + Eventuell muessen Anpassungen (Logo, Erscheinungsbild, etc) noch vorgenommen werden. Den Ordner findet man im Dateisistem unter + ./templates/[Neuer Name] - Die Abhängigkeiten kann man prüfen mit: - - /scripts/installation_check.pl -l @@ -1518,6 +1592,9 @@ insserv kivitendo-task-server RB Vollständiger Dokumentensatz mit alternativem Design + Die konzeptionelle Idee wird hier + auf Folie 5 bis 10 vorgestellt, Detaileinstellungen dann im Readme.tex im Vorlagenverzeichnis. @@ -1556,7 +1633,7 @@ insserv kivitendo-task-server Wenn sich das Problem nicht auf Grund der ausgabe im Webbrowser verifizieren lässt: - editiere [kivitendo-home]/config/kivitendo.conf und ändere "keep_tmp_files" auf 1 + editiere [kivitendo-home]/config/kivitendo.conf und ändere "keep_temp_files" auf 1 keep_temp_files = 1; @@ -1600,13 +1677,6 @@ insserv kivitendo-task-server print_templates auf ‘1’ stehen. Dieses ist die Standardeinstellung. - Weiterhin muss in der Datei - config/kivitendo.conf die Variable - dbcharset im Abschnitt system auf - die Zeichenkodierung gesetzt werden, die auch bei der Speicherung der - Daten in der Datenbank verwendet wird. Diese ist in den meisten Fällen - "UTF-8". - Während die Erzeugung von reinen OpenDocument-Dateien keinerlei weitere Software benötigt, wird zur Umwandlung dieser Dateien in PDF OpenOffice.org benötigt. Soll dieses Feature genutzt werden, so muss @@ -1633,6 +1703,23 @@ insserv kivitendo-task-server Python-UNO-Bindings benötigt, die Bestandteil von OpenOffice 2 sind. + + + Für die Verbindung zu OpenOffice wird normalerweise der Python-Interpreter /usr/bin/python benutzt. Sollte + dies nicht der richtige sein, so kann man mit zwei Konfigurationsvariablen entscheiden, welcher Python-Interpreter genutzt + wird. Mit der Option python_uno aus dem Abschnitt applications wird der Interpreter selber + festgelegt; sie steht standardmäßig auf dem eben erwähnten Wert /usr/bin/python. + + + + Zusätzlich ist es möglich, Pfade anzugeben, in denen Python neben seinen normalen Suchpfaden ebenfalls nach Modulen gesucht wird, + z.B. falls sich diese in einem gesonderten OpenOffice-Verzeichnis befinden. Diese zweite Variable heißt + python_uno_path und befindet sich im Abschnitt environment. Sie ist standardmäßig + leer. Werden hier mehrere Pfade angegeben, so müssen diese durch Doppelpunkte voneinander getrennt werden. Der Inhalt wird an den + Python-Interpreter über die Umgebungsvariable PYTHONPATH übergeben. + + + Ist $openofficeorg_daemon nicht gesetzt, so wird für jedes Dokument OpenOffice neu gestartet und die Konvertierung mit Hilfe eines Makros durchgeführt. Dieses Makro muss in der @@ -1900,7 +1987,45 @@ insserv kivitendo-task-server - + + Verhalten des Bilanzberichts + + Bis Version 3.0 wurde "closedto" ("Bücher schließen zum") als Grundlage für das + Startdatum benutzt. Schließt man die Bücher allerdings monatsweise führt dies + zu falschen Werten. + In der Mandantenkonfiguration kann man dieses Verhalten genau einstellen: + + + weiterhin closed_to benutzt (Default, es ändert sich nichts zu vorher) + + + immer den Jahresanfang nimmt (1.1. relativ zum Stichtag) + + + immer die letzte Eröffnungsbuchung als Startdatum nimmt + + + mit Jahresanfang als Alternative wenn es keine EB-Buchungen gibt + + + immer alle Buchungen seit Beginn der Datenbank nimmt + + + Folgende Hinweise zu den Optionen: + Das "Bücher schließen Datum" ist sinnvoll, wenn man nur komplette Jahre + schließt. Bei Wirtschaftsjahr = Kalendarjahr entspricht dies aber auch + Jahresanfang. + "Alle Buchungen" kann z.B. sinnvoll sein wenn man ohne Jahresabschluß + durchbucht. + Eröffnungsbuchung mit "alle Buchungen" als Fallback ist z.B. sinnvoll, wenn man + am sich Anfang des zweiten Buchungsjahres befindet, und noch keinen + Jahreswechsel und auch noch keine EB-Buchungen hat. + Bei den Optionen mit EB-Buchungen wird vorausgesetzt, daß diese immer am 1. Tag + des Wirtschaftsjahres gebucht werden. + Zur Sicherheit wird das Startdatum im Bilanzbericht jetzt zusätzlich zum + Stichtag mit angezeigt. Das hilft auch bei der Kontrolle für den + Abgleich mit der GuV. + Einstellungen pro Mandant @@ -1940,7 +2065,7 @@ insserv kivitendo-task-server Die Administrationsseite erreichen Sie unter: http://localhost/kivitendo-erp/admin.pl + url="http://localhost/kivitendo-erp/controller.pl?action=Admin/login">http://localhost/kivitendo-erp/controller.pl?action=Admin/login @@ -2069,6 +2194,82 @@ insserv kivitendo-task-server [periodic_invoices]. + + Spezielle Variablen + + + Um die erzeugten Rechnungen individualisieren zu können, werden beim Umwandeln des Auftrags in eine Rechnung einige speziell + formatierte Variablen durch für die jeweils aktuelle Abrechnungsperiode gültigen Werte ersetzt. Damit ist es möglich, z.B. den + Abrechnungszeitraum explizit auszuweisen. Eine Variable hat dabei die Syntax <%variablenname%>. + + + + Diese Variablen werden in den folgenden Elementen des Auftrags ersetzt: + + + + Bemerkungen + Interne Bemerkungen + Vorgangsbezeichnung + In den Beschreibungs- und Langtextfeldern aller Positionen + + + Die zur Verfügung stehenden Variablen sind die Folgenden: + + + + <%current_quarter%>, <%previous_quarter%>, <%next_quarter%> + + + + Aktuelles, vorheriges und nächstes Quartal als Zahl zwischen 1 und 4. + + + + + + <%current_month%>, <%previous_month%>, <%next_month%> + + + + Aktueller, vorheriger und nächster Monat als Zahl zwischen 1 und 12. + + + + + + <%current_month_long%>, <%previous_month_long%>, <%next_month_long%> + + + + Aktueller, vorheriger und nächster Monat als Name (Januar, Februar etc.). + + + + + + <%current_year%>, <%previous_year%>, <%next_year%> + + + + Aktuelles, vorheriges und nächstes Jahr als vierstellige Jahreszahl (2013 etc.). + + + + + + <%period_start_date%>, <%period_end_date%> + + + + Formatiertes Datum des ersten und letzten Tages im Abrechnungszeitraum (z.B. bei quartalsweiser Abrechnung und im ersten + Quartal von 2013 wären dies der 01.01.2013 und 31.03.2013). + + + + + + Auflisten @@ -2100,8 +2301,7 @@ insserv kivitendo-task-server manuell über den Workflow. - - + Dokumentenvorlagen und verfügbare Variablen @@ -2587,6 +2787,22 @@ insserv kivitendo-task-server + + c_vendor_id + + + Lieferantennummer beim Kunden (nur Kunden) + + + + + v_customer_id + + + Kundennummer beim Lieferanten (nur Lieferanten) + + + cp_email @@ -3052,7 +3268,7 @@ insserv kivitendo-task-server - Informationen über den Bearbeiter + Informationen über den Verkäufer @@ -3182,6 +3398,25 @@ insserv kivitendo-task-server + + + Variablen für Lieferbedingungen + + + + delivery_term + Datenbank-Objekt der Lieferbedingung + + + delivery_term.description + Beschreibung der Lieferbedingung + + + delivery_term.long_description + Langtext bzw. übersetzter Langtext der Lieferbedingung + + + @@ -4611,6 +4846,41 @@ Beschreibung: <%description%> gewechselt. + + Mandantenkonfiguration Lager + Die Lagerverwaltung in kivitendo funktioniert standardmässig wie folgt: + Wird ein Lager mit einem Lagerplatz angelegt, so gibt es die Möglichkeit hier über den + Menüpunkt Lager entsprechende Warenbewegungen durchzuführen. Ferner kann + jede Position eines Lieferscheins ein-, bzw. ausgelagert werden (Einkauf-, bzw. Verkauf). + Es können beliebig viele Lager mit beliebig vielen Lagerplätzen abgebildet werden. + Die Lagerbewegungen über einen Lieferschein erfolgt durch Anklicken jeder Einzelposition und + das Auswählen dieser Position zu einem Lager mit Lagerplatz. + Dieses Verfahren lässt sich schrittweise vereinfachen, je nachdem wie die Einstellungen in + der Mandatenkonfiguration gesetzt werden. + + + Hier wird ein zusätzlicher Knopf (Auslagern über Standard-Lagerplatz) + in dem Lieferschein-Beleg hinzugefügt, der dann alle Lagerbewegungen über den Standardlagerplatz (konfigurierbar pro Ware) durchführt. + + + + Das obige Auslagern schlägt fehl, wenn die entsprechende Menge für + die Lagerbewegung nicht vorhanden ist, möchte man dies auch ignorieren und ggf. dann nachpflegen, so kann man eine Negativ-Warenmenge mit dieser Option + erlauben. Hierfür muss ein entsprechender Lagerplatz (Fehlbestand, o.ä.) konfiguriert sein. + + + Zusätzliche Funktionshinweise: + + Ist dieser konfiguriert, wird dies auch als Standard-Voreinstellung bei der Neuerfassung von + Stammdaten-> Waren / Dienstleistung / Erzeugnis verwendet. + + + Wird beim 'Auslagern über Standardlagerplatz' + keine Standardlagerplatz zu der Ware gefunden, so wird mit dieser Option einfach der Standardlagerplatz verwendet. + + + + @@ -4909,7 +5179,7 @@ Beschreibung: <%description%> überwiegend die Daten, die sich unter Programm -> Einstellungen befinden, bzw. die Informationen über den Benutzer die über die - Administrator-Schnittstelle (admin.pl) eingegeben wurden. + Administrator-Schnittstelle eingegeben wurden. @@ -4998,6 +5268,10 @@ $main::lxdebug->message(0, 'Wer bin ich? Kunde oder Lieferant:' . $form->{ vom aktuellen User abhängen wird das Objekt aus Geschwindigkeitsgründen nur einmal angelegt und dann nach jedem Request kurz resettet. + + Dieses Objekt kapselt auch den gerade aktiven Mandanten. Dessen Einstellungen können über + $::auth->client abgefragt werden; Rückgabewert ist ein Hash mit den Werten aus der Tabelle + auth.clients. @@ -5280,21 +5554,6 @@ file = /tmp/kivitendo-debug.log Mit FastCGI ist die neuste Version auf 0,26 Sekunden selbst in den kritischen Pfaden, unter 0,15 sonst. - - - Bekannte Probleme - - - Encoding Awareness - - UTF-8 kodierte Installationen sind sehr anfällig gegen - fehlerhfate Encodings unter FCGI. latin9 Installationen behandeln - falsch kodierte Zeichen eher unwissend, und geben sie einfach - weiter. UTF-8 verweigert bei fehlerhaften Programmpfaden kurzerhand - das Ausliefern. Es wird noch daran gearbeitet, alle Fehler da zu - beseitigen. - - @@ -5304,29 +5563,17 @@ file = /tmp/kivitendo-debug.log xreflabel="Einführung in die Datenbank-Upgradedateien"> 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. - - Dieser Mechanismus wurde für kivitendo 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. - - kivitendo 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. + Datenbankupgrades werden über einzelne Upgrade-Scripte gesteuert, die sich im Verzeichnis sql/Pg-upgrade2 + befinden. In diesem Verzeichnis muss pro Datenbankupgrade eine Datei existieren, die neben den eigentlich auszuführenden SQL- oder + Perl-Befehlen einige Kontrollinformationen enthält. + + Kontrollinformationen definieren Abhängigkeiten und Prioritäten, 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 braucht. + + kivitendo 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. 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. + 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 für SQL-Upgradedateien der Zeichensatz + "ISO-8859-15" angenommen. Perl-Upgradescripte hingegen müssen immer in UTF-8 encodiert sein und sollten + demnach auch ein "use utf8;" enthalten. @@ -5447,6 +5693,48 @@ file = /tmp/kivitendo-debug.log + + Format von in Perl geschriebenen Datenbankupgradescripten + + In Perl geschriebene Datenbankscripte werden nicht einfach so ausgeführt sondern müssen sich an gewisse Konventionen + halten. Dafür bekommen sie aber auch einige Komfortfunktionen bereitgestellt. + + Ein Upgradescript stellt dabei eine vollständige Objektklasse dar, die vom Elternobjekt + "SL::DBUpgrade2::Base" erben und eine Funktion namens "run" zur Verfügung stellen muss. Das + Script wird ausgeführt, indem eine Instanz dieser Klasse erzeugt und darauf die erwähnte "run" aufgerufen + wird. + + Zu beachten ist, dass sich der Paketname der Datei aus dem Wert für "@tag" ableitet. Dabei werden alle + Zeichen, die in Paketnamen ungültig wären (gerade Bindestriche), durch Unterstriche ersetzt. Insgesamt sieht der Paketname wie folgt + aus: "SL::DBUpgrade2::tag". + + Welche Komfortfunktionen zur Verfügung stehen, erfahren Sie in der Perl-Dokumentation zum oben genannten Modul; aufzurufen mit + "perldoc SL/DBUpgrade2/Base.pm". + + Ein Mindestgerüst eines gültigen Perl-Upgradescriptes sieht wie folgt aus: + + # @tag: beispiel-upgrade-file42 +# @description: Ein schönes Beispielscript +# @depends: release_3_0_0 +package SL::DBUpgrade2::beispiel_upgrade_file42; + +use strict; +use utf8; + +use parent qw(SL::DBUpgrade2::Base); + +sub run { + my ($self) = @_; + + # hier Aktionen ausführen + + return 1; +} + +1; + + + Hilfsscript dbupgrade2_tool.pl @@ -5546,6 +5834,13 @@ file = /tmp/kivitendo-debug.log point. + + Character set + + All files included in a language pack must use UTF-8 as their encoding. + + File structure @@ -5582,27 +5877,6 @@ file = /tmp/kivitendo-debug.log - - charset - - - This file should be present. - - The charset file describes which - charset a language package is written in and applies to all - other language files in the package. It is possible to write - some language packages without an explicit charset, but it is - still strongly recommended. You'll never know in what - environment your language package will be used, and neither - UTF-8 nor Latin1 are guaranteed. - - The whole content of this file is a string that can be - recognized as a valid charset encoding. Example: - - UTF-8 - - - all @@ -5748,11 +6022,11 @@ filenames Alle Tests liegen im Unterverzeichnis t/. - Ein Script (bzw. ein Test) in f/ enthält einen oder mehrere Testfälle. + Ein Script (bzw. ein Test) in t/ enthält einen oder mehrere Testfälle. Alle Dateinamen von Tests enden auf .t. Es sind selbstständig ausführbare Perl-Scripte. - Die Test-Suite besteht aus der Gesamtheit aller Tests, sprich aller Scripte in f/, deren + Die Test-Suite besteht aus der Gesamtheit aller Tests, sprich aller Scripte in t/, deren Dateiname auf .t endet. @@ -5764,11 +6038,24 @@ filenames Test::Deep (Debian-Paketname: libtest-deep-perl; Fedora Core: - perl-Test-Deep; openSuSE: perl-Test-Deep) + perl-Test-Deep; openSUSE: perl-Test-Deep) + Test::Exception (Debian-Paketname: libtest-exception-perl; Fedora Core: + perl-Test-Exception; openSUSE: perl-Test-Exception) + Test::Output (Debian-Paketname: libtest-output-perl; Fedora Core: + perl-Test-Output; openSUSE: perl-Test-Output) Test::Harness 3.0.0 oder höher. Dieses Modul ist ab Perl 5.10.1 Bestandteil der Perl-Distribution und kann für frühere Versionen aus dem CPAN bezogen werden. + LWP::Simple aus dem Paket libwww-perl (Debian-Panetname: + libwww-perl; Fedora Core: perl-libwww-perl; openSUSE: + perl-libwww-perl) + URI::Find (Debian-Panetname: liburi-find-perl; Fedora Core: + perl-URI-Find; openSUSE: perl-URI-Find) + + Weitere Voraussetzung ist, dass die Testsuite ihre eigene Datenbank anlegen kann, um Produktivdaten nicht zu gefährden. Dazu + müssen in der Konfigurationsdatei im Abschnit testing/database Datenbankverbindungsparameter angegeben + werden. Der hier angegebene Benutzer muss weiterhin das Recht haben, Datenbanken anzulegen und zu löschen. @@ -5777,14 +6064,14 @@ filenames Es gibt mehrere Möglichkeiten zum Ausführen der Tests: entweder, man lässt alle Tests auf einmal ausführen, oder man führt - gezielt einzelne Scripte aus. Für beide Fälle gibt es das Helferscript t/test.sh. + gezielt einzelne Scripte aus. Für beide Fälle gibt es das Helferscript t/test.pl. - Will man die komplette Test-Suite ausführen, so muss man einfach nur t/test.sh ohne weitere Parameter aus + Will man die komplette Test-Suite ausführen, so muss man einfach nur t/test.pl ohne weitere Parameter aus dem kivitendo-Basisverzeichnis heraus ausführen. - Um einzelne Test-Scripte auszuführen, übergibt man deren Namen an t/test.sh. Beispielsweise: + Um einzelne Test-Scripte auszuführen, übergibt man deren Namen an t/test.pl. Beispielsweise: - t/test.sh t/form/format_amount.t t/background_job/known_jobs.t + t/test.pl t/form/format_amount.t t/background_job/known_jobs.t @@ -5821,7 +6108,7 @@ filenames Ideen für neue Test-Scripte, die keine konkreten Funktionen testen - Ideen, die abgesehen von Funktions noch nicht umgesetzt wurden: + Ideen, die abgesehen von Funktionen noch nicht umgesetzt wurden: Überprüfung auf fehlende symbolische Links @@ -5846,7 +6133,7 @@ filenames Namen sind englisch, komplett klein geschrieben und einzelne Wörter mit Unterstrichten getrennt (beispielsweise bad_function_params.t). - Unterverzeichnisse sollten grob nach dem Themenbereich benannt sind, mit dem sich die Scripte darin befassen + Unterverzeichnisse sollten grob nach dem Themenbereich benannt sein, mit dem sich die Scripte darin befassen (beispielsweise background_jobs für Tests rund um Hintergrund-Jobs). Test-Scripte sollten einen überschaubaren Bereich von Funktionalität testen, der logisch zusammenhängend ist