kivitendo/doc/dokumentation.xml @ ce5a051e
7ee506b3 | Moritz Bunkus | <?xml version="1.0" encoding="utf-8"?>
|
||
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
|
||||
"http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
|
||||
5fa26f9a | Moritz Bunkus | <book id="kivitendo-documentation" lang="de">
|
||
2c8e8f14 | Bernd Bleßmann | <title>kivitendo 3.5.0-beta: Installation, Konfiguration, Entwicklung</title>
|
||
7ee506b3 | Moritz Bunkus | |||
<chapter id="Aktuelle-Hinweise">
|
||||
<title>Aktuelle Hinweise</title>
|
||||
<para>Aktuelle Installations- und Konfigurationshinweise gibt es:</para>
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
eead7ecd | Jan Büren | <para>im Community-Forum: <ulink
|
||
2f0c7d8c | Geoffrey Richardson | url="https://forum.kivitendo.de:32443">https://forum.kivitendo.de:32443</ulink></para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
0e14ae06 | Andreas Zenklusen | |||
eead7ecd | Jan Büren | <listitem>
|
||
<para>im Kunden-Forum: <ulink
|
||||
url="http://redmine.kivitendo-premium.de/projects/forum/boards/">http://redmine.kivitendo-premium.de/projects/forum/boards/</ulink></para>
|
||||
</listitem>
|
||||
0e14ae06 | Andreas Zenklusen | |||
aaea6742 | Jan Büren | <listitem>
|
||
0e14ae06 | Andreas Zenklusen | <para>in der doc/UPGRADE Datei im doc-Verzeichnis der
|
||
Installation</para>
|
||||
aaea6742 | Jan Büren | </listitem>
|
||
0e14ae06 | Andreas Zenklusen | |||
aaea6742 | Jan Büren | <listitem>
|
||
0e14ae06 | Andreas Zenklusen | <para>Im Schulungs- und Dienstleistungsangebot der entsprechenden
|
||
kivitendo-Partner: <ulink
|
||||
aaea6742 | Jan Büren | url="http://www.kivitendo.de/partner.html">http://www.kivitendo.de/partner.html</ulink></para>
|
||
</listitem>
|
||||
7ee506b3 | Moritz Bunkus | </itemizedlist>
|
||
</chapter>
|
||||
6023717e | Moritz Bunkus | <chapter id="config">
|
||
7ee506b3 | Moritz Bunkus | <title>Installation und Grundkonfiguration</title>
|
||
c8a19933 | Moritz Bunkus | <sect1 id="Installation-Übersicht">
|
||
<title>Übersicht</title>
|
||||
0e14ae06 | Andreas Zenklusen | <para>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.</para>
|
||||
c8a19933 | Moritz Bunkus | |||
<orderedlist>
|
||||
0e14ae06 | Andreas Zenklusen | <listitem>
|
||
<para><emphasis>Voraussetzungen überprüfen</emphasis>: kivitendo
|
||||
benötigt gewisse Ressourcen und benutzt weitere Programme. Das
|
||||
Kapitel "<xref linkend="Benötigte-Software-und-Pakete"/>" erläutert
|
||||
diese. Auch die Liste der benötigten Perl-Module befindet sich
|
||||
hier.</para>
|
||||
</listitem>
|
||||
c8a19933 | Moritz Bunkus | |||
0e14ae06 | Andreas Zenklusen | <listitem>
|
||
<para><emphasis>Installation von kivitendo</emphasis>: Diese umfasst
|
||||
die "<xref linkend="Manuelle-Installation-des-Programmpaketes"/>"
|
||||
sowie grundlegende Einstellungen, die der "<xref
|
||||
linkend="config.config-file"/>" erläutert.</para>
|
||||
</listitem>
|
||||
c8a19933 | Moritz Bunkus | |||
0e14ae06 | Andreas Zenklusen | <listitem>
|
||
<para><emphasis>Konfiguration externer Programme</emphasis>: hierzu
|
||||
gehören die Datenbank ("<xref
|
||||
linkend="Anpassung-der-PostgreSQL-Konfiguration"/>") und der
|
||||
Webserver ("<xref linkend="Apache-Konfiguration"/>").</para>
|
||||
</listitem>
|
||||
c8a19933 | Moritz Bunkus | |||
0e14ae06 | Andreas Zenklusen | <listitem>
|
||
<para><emphasis>Benutzerinformationen speichern können</emphasis>:
|
||||
man benötigt mindestens eine Datenbank, in der Informationen zur
|
||||
Authentifizierung sowie die Nutzdaten gespeichert werden. Wie man
|
||||
das als Administrator macht, verrät "<xref
|
||||
linkend="Benutzerauthentifizierung-und-Administratorpasswort"/>".</para>
|
||||
</listitem>
|
||||
c8a19933 | Moritz Bunkus | |||
0e14ae06 | Andreas Zenklusen | <listitem>
|
||
<para><emphasis>Benutzer, Gruppen und Datenbanken
|
||||
anlegen</emphasis>: wie dies alles zusammenspielt erläutert "<xref
|
||||
linkend="Benutzer--und-Gruppenverwaltung"/>".</para>
|
||||
</listitem>
|
||||
c8a19933 | Moritz Bunkus | |||
0e14ae06 | Andreas Zenklusen | <listitem>
|
||
<para><emphasis>Los geht's</emphasis>: alles soweit erledigt? Dann
|
||||
kann es losgehen: "<xref linkend="kivitendo-ERP-verwenden"/>"</para>
|
||||
</listitem>
|
||||
c8a19933 | Moritz Bunkus | </orderedlist>
|
||
0e14ae06 | Andreas Zenklusen | <para>Alle weiteren Unterkapitel in diesem Kapitel sind ebenfalls
|
||
wichtig und sollten vor einer ernsthaften Inbetriebnahme gelesen
|
||||
werden.</para>
|
||||
c8a19933 | Moritz Bunkus | </sect1>
|
||
7ee506b3 | Moritz Bunkus | <sect1 id="Benötigte-Software-und-Pakete">
|
||
<title>Benötigte Software und Pakete</title>
|
||||
<sect2 id="Betriebssystem">
|
||||
<title>Betriebssystem</title>
|
||||
5fa26f9a | Moritz Bunkus | <para>kivitendo ist für Linux konzipiert, und sollte auf jedem
|
||
7ee506b3 | Moritz Bunkus | unixoiden Betriebssystem zum Laufen zu kriegen sein. Getestet ist
|
||
diese Version im speziellen auf Debian und Ubuntu, grundsätzlich wurde
|
||||
bei der Auswahl der Pakete aber darauf Rücksicht genommen, dass es
|
||||
ohne große Probleme auf den derzeit aktuellen verbreiteten
|
||||
Distributionen läuft.</para>
|
||||
524bf98c | Jan Büren | <para>Anfang 2016 sind das folgende Systeme, von denen bekannt ist,
|
||
5fa26f9a | Moritz Bunkus | dass kivitendo auf ihnen läuft:</para>
|
||
7ee506b3 | Moritz Bunkus | |||
<itemizedlist>
|
||||
<listitem>
|
||||
d3a086e3 | Wulf Coulmann | <para>Debian</para>
|
||
0e14ae06 | Andreas Zenklusen | |||
d3a086e3 | Wulf Coulmann | <itemizedlist>
|
||
0e14ae06 | Andreas Zenklusen | <listitem>
|
||
<para>7.0 "Wheezy"</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>8.0 "Jessie"</para>
|
||||
</listitem>
|
||||
d3a086e3 | Wulf Coulmann | </itemizedlist>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
<listitem>
|
||||
0e14ae06 | Andreas Zenklusen | <para>Ubuntu 12.04 LTS "Precise Pangolin", 14.04 "Trusty Tahr"
|
||
LTS, 15.10 "Wily Werewolf" und 16.04 "Xenial Xerus" LTS
|
||||
Alpha</para>
|
||||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
<listitem>
|
||||
eed85694 | Moritz Bunkus | <para>openSUSE LEAP 42.1</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
<listitem>
|
||||
eed85694 | Moritz Bunkus | <para>Fedora 22</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</itemizedlist>
|
||||
</sect2>
|
||||
<sect2 id="Pakete" xreflabel="Pakete">
|
||||
6066c769 | Moritz Bunkus | <title>Benötigte Perl-Pakete installieren</title>
|
||
7ee506b3 | Moritz Bunkus | |||
5fa26f9a | Moritz Bunkus | <para>Zum Betrieb von kivitendo werden zwingend ein Webserver (meist
|
||
1d3eb7c0 | Jan Büren | Apache) und ein Datenbankserver (PostgreSQL) in einer aktuellen Version
|
||
(s.a. Liste der unterstützten Betriebssysteme) benötigt.</para>
|
||||
7ee506b3 | Moritz Bunkus | |||
0e14ae06 | Andreas Zenklusen | <para>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:</para>
|
||||
6066c769 | Moritz Bunkus | |||
<programlisting>./scripts/installation_check.pl</programlisting>
|
||||
<para>Die vollständige Liste der benötigten Perl-Module lautet:</para>
|
||||
7ee506b3 | Moritz Bunkus | |||
<itemizedlist>
|
||||
0e14ae06 | Andreas Zenklusen | <listitem>
|
||
<para><literal>parent</literal> (nur bei Perl vor 5.10.1)</para>
|
||||
</listitem>
|
||||
7ee506b3 | Moritz Bunkus | |||
0e14ae06 | Andreas Zenklusen | <listitem>
|
||
<para><literal>Archive::Zip</literal></para>
|
||||
</listitem>
|
||||
7ee506b3 | Moritz Bunkus | |||
0e14ae06 | Andreas Zenklusen | <listitem>
|
||
<para><literal>Algorithm::CheckDigits</literal></para>
|
||||
</listitem>
|
||||
524bf98c | Jan Büren | |||
0e14ae06 | Andreas Zenklusen | <listitem>
|
||
<para><literal>CGI</literal></para>
|
||||
</listitem>
|
||||
eed85694 | Moritz Bunkus | |||
0e14ae06 | Andreas Zenklusen | <listitem>
|
||
<para><literal>Clone</literal></para>
|
||||
</listitem>
|
||||
eed85694 | Moritz Bunkus | |||
0e14ae06 | Andreas Zenklusen | <listitem>
|
||
<para><literal>Config::Std</literal></para>
|
||||
</listitem>
|
||||
7ee506b3 | Moritz Bunkus | |||
0e14ae06 | Andreas Zenklusen | <listitem>
|
||
<para><literal>DateTime</literal></para>
|
||||
</listitem>
|
||||
7ee506b3 | Moritz Bunkus | |||
0e14ae06 | Andreas Zenklusen | <listitem>
|
||
<para><literal>DateTime::Format::Strptime</literal></para>
|
||||
</listitem>
|
||||
eed85694 | Moritz Bunkus | |||
0e14ae06 | Andreas Zenklusen | <listitem>
|
||
<para><literal>DBI</literal></para>
|
||||
</listitem>
|
||||
7ee506b3 | Moritz Bunkus | |||
0e14ae06 | Andreas Zenklusen | <listitem>
|
||
<para><literal>DBD::Pg</literal></para>
|
||||
</listitem>
|
||||
7ee506b3 | Moritz Bunkus | |||
0e14ae06 | Andreas Zenklusen | <listitem>
|
||
<para><literal>Email::Address</literal></para>
|
||||
</listitem>
|
||||
7ee506b3 | Moritz Bunkus | |||
0e14ae06 | Andreas Zenklusen | <listitem>
|
||
<para><literal>Email::MIME</literal></para>
|
||||
</listitem>
|
||||
a7121495 | Moritz Bunkus | |||
0e14ae06 | Andreas Zenklusen | <listitem>
|
||
<para><literal>FCGI</literal> (nicht Versionen 0.68 bis 0.71
|
||||
inklusive; siehe <xref
|
||||
linkend="Apache-Konfiguration.FCGI.WebserverUndPlugin"/>)</para>
|
||||
</listitem>
|
||||
6066c769 | Moritz Bunkus | |||
0e14ae06 | Andreas Zenklusen | <listitem>
|
||
<para><literal>File::Copy::Recursive</literal></para>
|
||||
</listitem>
|
||||
8ac5bc8d | Moritz Bunkus | |||
30b069f2 | Martin Helmling | <listitem>
|
||
<para><literal>File::MimeInfo::Magic</literal></para>
|
||||
</listitem>
|
||||
0e14ae06 | Andreas Zenklusen | <listitem>
|
||
<para><literal>GD</literal></para>
|
||||
</listitem>
|
||||
eed85694 | Moritz Bunkus | |||
0e14ae06 | Andreas Zenklusen | <listitem>
|
||
<para><literal>HTML::Parser</literal></para>
|
||||
</listitem>
|
||||
eed85694 | Moritz Bunkus | |||
0e14ae06 | Andreas Zenklusen | <listitem>
|
||
<para><literal>HTML::Restrict</literal></para>
|
||||
</listitem>
|
||||
eed85694 | Moritz Bunkus | |||
0e14ae06 | Andreas Zenklusen | <listitem>
|
||
<para><literal>Image::Info</literal></para>
|
||||
</listitem>
|
||||
eed85694 | Moritz Bunkus | |||
0e14ae06 | Andreas Zenklusen | <listitem>
|
||
<para><literal>JSON</literal></para>
|
||||
</listitem>
|
||||
7ee506b3 | Moritz Bunkus | |||
0e14ae06 | Andreas Zenklusen | <listitem>
|
||
<para><literal>List::MoreUtils</literal></para>
|
||||
</listitem>
|
||||
7ee506b3 | Moritz Bunkus | |||
2ff6f993 | Moritz Bunkus | <listitem>
|
||
0e14ae06 | Andreas Zenklusen | <para><literal>List::UtilsBy</literal></para>
|
||
</listitem>
|
||||
eed85694 | Moritz Bunkus | |||
0e14ae06 | Andreas Zenklusen | <listitem>
|
||
<para><literal>Net::SMTP::SSL</literal> (optional, bei
|
||||
E-Mail-Versand über SSL; siehe Abschnitt "<xref
|
||||
linkend="config.sending-email.smtp"/>")</para>
|
||||
</listitem>
|
||||
a7121495 | Moritz Bunkus | |||
0e14ae06 | Andreas Zenklusen | <listitem>
|
||
<para><literal>Net::SSLGlue</literal> (optional, bei
|
||||
E-Mail-Versand über TLS; siehe Abschnitt "<xref
|
||||
linkend="config.sending-email.smtp"/>")</para>
|
||||
</listitem>
|
||||
a7121495 | Moritz Bunkus | |||
0e14ae06 | Andreas Zenklusen | <listitem>
|
||
<para><literal>Params::Validate</literal></para>
|
||||
</listitem>
|
||||
7ee506b3 | Moritz Bunkus | |||
0e14ae06 | Andreas Zenklusen | <listitem>
|
||
<para><literal>PBKDF2::Tiny</literal></para>
|
||||
</listitem>
|
||||
524bf98c | Jan Büren | |||
0e14ae06 | Andreas Zenklusen | <listitem>
|
||
<para><literal>PDF::API2</literal></para>
|
||||
</listitem>
|
||||
7ee506b3 | Moritz Bunkus | |||
0e14ae06 | Andreas Zenklusen | <listitem>
|
||
<para><literal>Rose::Object</literal></para>
|
||||
</listitem>
|
||||
2ff6f993 | Moritz Bunkus | |||
0e14ae06 | Andreas Zenklusen | <listitem>
|
||
<para><literal>Rose::DB</literal></para>
|
||||
</listitem>
|
||||
7ee506b3 | Moritz Bunkus | |||
0e14ae06 | Andreas Zenklusen | <listitem>
|
||
<para><literal>Rose::DB::Object</literal> Version 0.788 oder
|
||||
neuer</para>
|
||||
</listitem>
|
||||
7ee506b3 | Moritz Bunkus | |||
0e14ae06 | Andreas Zenklusen | <listitem>
|
||
<para><literal>String::ShellQuote</literal></para>
|
||||
</listitem>
|
||||
eed85694 | Moritz Bunkus | |||
0e14ae06 | Andreas Zenklusen | <listitem>
|
||
<para><literal>Sort::Naturally</literal></para>
|
||||
</listitem>
|
||||
eed85694 | Moritz Bunkus | |||
0e14ae06 | Andreas Zenklusen | <listitem>
|
||
<para><literal>Template</literal></para>
|
||||
</listitem>
|
||||
7ee506b3 | Moritz Bunkus | |||
0e14ae06 | Andreas Zenklusen | <listitem>
|
||
<para><literal>Text::CSV_XS</literal></para>
|
||||
</listitem>
|
||||
7ee506b3 | Moritz Bunkus | |||
0e14ae06 | Andreas Zenklusen | <listitem>
|
||
<para><literal>Text::Iconv</literal></para>
|
||||
</listitem>
|
||||
7ee506b3 | Moritz Bunkus | |||
0e14ae06 | Andreas Zenklusen | <listitem>
|
||
2ff6f993 | Moritz Bunkus | <para><literal>URI</literal></para>
|
||
0e14ae06 | Andreas Zenklusen | </listitem>
|
||
7ee506b3 | Moritz Bunkus | |||
0e14ae06 | Andreas Zenklusen | <listitem>
|
||
<para><literal>XML::Writer</literal></para>
|
||||
</listitem>
|
||||
7ee506b3 | Moritz Bunkus | |||
0e14ae06 | Andreas Zenklusen | <listitem>
|
||
<para><literal>YAML</literal></para>
|
||||
</listitem>
|
||||
7ee506b3 | Moritz Bunkus | </itemizedlist>
|
||
0e14ae06 | Andreas Zenklusen | <para>Seit Version v3.4.0 sind die folgenden Pakete hinzugekommen:
|
||
<literal>Algorithm::CheckDigits</literal><literal>PBKDF2::Tiny</literal></para>
|
||||
829e589a | Moritz Bunkus | |||
0e14ae06 | Andreas Zenklusen | <para>Seit Version v3.2.0 sind die folgenden Pakete hinzugekommen:
|
||
<literal>GD</literal>, <literal>HTML::Restrict</literal>,
|
||||
<literal>Image::Info</literal></para>
|
||||
<para>Seit v3.0.0 sind die folgenden Pakete hinzugekommen:
|
||||
<literal>File::Copy::Recursive</literal>.</para>
|
||||
<para>Seit v2.7.0 sind die folgenden Pakete hinzugekommen:
|
||||
<literal>Email::MIME</literal>, <literal>Net::SMTP::SSL</literal>,
|
||||
a7121495 | Moritz Bunkus | <literal>Net::SSLGlue</literal>.</para>
|
||
7ee506b3 | Moritz Bunkus | <para>Gegenüber Version 2.6.0 sind zu dieser Liste 2 Pakete
|
||
hinzugekommen, <literal>URI</literal> und
|
||||
5fa26f9a | Moritz Bunkus | <literal>XML::Writer</literal> sind notwendig. Ohne startet kivitendo
|
||
7ee506b3 | Moritz Bunkus | nicht.</para>
|
||
<para>Gegenüber Version 2.6.1 sind <literal>parent</literal>,
|
||||
<literal>DateTime</literal>, <literal>Rose::Object</literal>,
|
||||
<literal>Rose::DB</literal> und <literal>Rose::DB::Object</literal>
|
||||
neu hinzugekommen. <literal>IO::Wrap</literal> wurde entfernt.</para>
|
||||
<para>Gegenüber Version 2.6.3 ist <literal>JSON</literal> neu
|
||||
hinzugekommen.</para>
|
||||
<para><literal>Email::Address</literal> und
|
||||
<literal>List::MoreUtils</literal> sind schon länger feste
|
||||
5fa26f9a | Moritz Bunkus | Abhängigkeiten, wurden aber bisher mit kivitendo mitgeliefert. Beide
|
||
7ee506b3 | Moritz Bunkus | sind auch in 2.6.1 weiterhin mit ausgeliefert, wurden in einer
|
||
zukünftigen Version aber aus dem Paket entfernt werden. Es wird
|
||||
empfohlen diese Module zusammen mit den anderen als Bibliotheken zu
|
||||
installieren.</para>
|
||||
6066c769 | Moritz Bunkus | <sect3>
|
||
<title>Debian und Ubuntu</title>
|
||||
0e14ae06 | Andreas Zenklusen | <para>Für Debian und Ubuntu stehen die meisten der benötigten
|
||
Perl-Pakete als Debian-Pakete zur Verfügung. Sie können mit
|
||||
folgendem Befehl installiert werden:</para>
|
||||
6066c769 | Moritz Bunkus | |||
46ac7beb | Jan Büren | <programlisting>apt install apache2 libarchive-zip-perl libclone-perl \
|
||
6066c769 | Moritz Bunkus | 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 \
|
||||
524bf98c | Jan Büren | libimage-info-perl libgd-gd2-perl libapache2-mod-fcgid \
|
||
libfile-copy-recursive-perl postgresql libalgorithm-checkdigits-perl \
|
||||
46ac7beb | Jan Büren | libcrypt-pbkdf2-perl git libcgi-pm-perl
|
||
524bf98c | Jan Büren | </programlisting>
|
||
dfe4581d | Geoffrey Richardson | |||
0e14ae06 | Andreas Zenklusen | <para>Für das Paket HTML::Restrict gibt es kein Debian-Paket, dies
|
||
muß per CPAN installiert werden. Unter Ubuntu funktioniert das
|
||||
mit:</para>
|
||||
54ad88ed | Geoffrey Richardson | <programlisting>apt-get install build-essential
|
||
cpan HTML::Restrict</programlisting>
|
||||
6066c769 | Moritz Bunkus | </sect3>
|
||
7ee506b3 | Moritz Bunkus | |||
6066c769 | Moritz Bunkus | <sect3>
|
||
eed85694 | Moritz Bunkus | <title>Fedora</title>
|
||
7ee506b3 | Moritz Bunkus | |||
0e14ae06 | Andreas Zenklusen | <para>Für Fedora stehen die meisten der benötigten Perl-Pakete als
|
||
RPM-Pakete zur Verfügung. Sie können mit folgendem Befehl
|
||||
installiert werden:</para>
|
||||
7ee506b3 | Moritz Bunkus | |||
eed85694 | Moritz Bunkus | <programlisting>dnf install httpd mod_fcgid perl-Archive-Zip perl-Clone perl-DBD-Pg \
|
||
6066c769 | Moritz Bunkus | perl-DBI perl-DateTime perl-Email-Address perl-Email-MIME perl-FCGI \
|
||
8ac5bc8d | Moritz Bunkus | perl-File-Copy-Recursive perl-JSON perl-List-MoreUtils perl-Net-SMTP-SSL perl-Net-SSLGlue \
|
||
6066c769 | Moritz Bunkus | perl-PDF-API2 perl-Params-Validate perl-Rose-DB perl-Rose-DB-Object \
|
||
perl-Rose-Object perl-Sort-Naturally perl-String-ShellQuote \
|
||||
90baed86 | Moritz Bunkus | perl-Template-Toolkit perl-Text-CSV_XS perl-Text-Iconv perl-URI \
|
||
eed85694 | Moritz Bunkus | perl-XML-Writer perl-YAML perl-parent postgresql-server perl-CPAN \
|
||
perl-Algorithm-CheckDigits perl-GD perl-Class-XSAccessor perl-Text-Balanced</programlisting>
|
||||
7ee506b3 | Moritz Bunkus | |||
0e14ae06 | Andreas Zenklusen | <para>Zusätzlich müssen einige Pakete aus dem CPAN installiert
|
||
werden. Dazu können Sie die folgenden Befehle nutzen:</para>
|
||||
7ee506b3 | Moritz Bunkus | |||
eed85694 | Moritz Bunkus | <programlisting>cpan Config::Std HTML::Restrict</programlisting>
|
||
6066c769 | Moritz Bunkus | </sect3>
|
||
7ee506b3 | Moritz Bunkus | |||
6066c769 | Moritz Bunkus | <sect3>
|
||
<title>openSUSE</title>
|
||||
0e14ae06 | Andreas Zenklusen | <para>Für openSUSE stehen die meisten der benötigten Perl-Pakete als
|
||
RPM-Pakete zur Verfügung. Sie können mit folgendem Befehl
|
||||
6066c769 | Moritz Bunkus | installiert werden:</para>
|
||
eed85694 | Moritz Bunkus | <programlisting>zypper install apache2 apache2-mod_fcgid perl-Archive-Zip perl-Clone \
|
||
6066c769 | Moritz Bunkus | perl-Config-Std perl-DBD-Pg perl-DBI perl-DateTime perl-Email-Address \
|
||
8ac5bc8d | Moritz Bunkus | perl-Email-MIME perl-FastCGI perl-File-Copy-Recursive perl-JSON perl-List-MoreUtils \
|
||
6066c769 | Moritz Bunkus | 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 \
|
||||
eed85694 | Moritz Bunkus | perl-URI perl-XML-Writer perl-YAML perl-CPAN \
|
||
perl-Algorithm-CheckDigits perl-GD perl-Class-XSAccessor postgresql-server</programlisting>
|
||||
6066c769 | Moritz Bunkus | |||
0e14ae06 | Andreas Zenklusen | <para>Zusätzlich müssen einige Pakete aus dem CPAN installiert
|
||
werden. Dazu können Sie die folgenden Befehle nutzen:</para>
|
||||
6066c769 | Moritz Bunkus | |||
eed85694 | Moritz Bunkus | <programlisting>cpan Rose::Db::Object</programlisting>
|
||
6066c769 | Moritz Bunkus | </sect3>
|
||
7ee506b3 | Moritz Bunkus | </sect2>
|
||
f2e8209c | Martin Helmling | <sect2>
|
||
<title>Andere Pakete installieren</title>
|
||||
<para>Seit Version v3.4.0 wird für den Bankimport optional das Paket
|
||||
'aqbanking-tools' benötigt.</para>
|
||||
<para>Ubuntu: <programlisting>apt install aqbanking-tools</programlisting></para>
|
||||
<para>OpenSuSE: <programlisting>zypper install aqbanking-tools</programlisting></para>
|
||||
<para>Seit Version v3.4.1 wird generell zum Feststellen der
|
||||
Seitenanzahl von PDF_Dokumenten 'pdfinfo' benötigt was im Paket
|
||||
'poppler-utils' enthalten ist.</para>
|
||||
<para>Ubuntu: <programlisting>apt install poppler-utils</programlisting></para>
|
||||
<para>OpenSuSE: <programlisting>zypper install poppler-tools</programlisting></para>
|
||||
</sect2>
|
||||
7ee506b3 | Moritz Bunkus | </sect1>
|
||
<sect1 id="Manuelle-Installation-des-Programmpaketes"
|
||||
xreflabel="Manuelle Installation des Programmpaketes">
|
||||
<title>Manuelle Installation des Programmpaketes</title>
|
||||
0e14ae06 | Andreas Zenklusen | |||
<para>Der aktuelle Stable-Release, bzw. beta Release wird bei github
|
||||
gehostet und kann <ulink
|
||||
url="https://github.com/kivitendo/kivitendo-erp/releases">hier</ulink>
|
||||
heruntergeladen werden.</para>
|
||||
<para>Die kivitendo ERP Installationsdatei
|
||||
a04828ca | Geoffrey Richardson | (<filename>kivitendo-erp-3.4.1.tgz</filename>) wird im
|
||
0e14ae06 | Andreas Zenklusen | Dokumentenverzeichnis des Webservers (z.B.
|
||
<filename>/var/www/html/</filename>,
|
||||
<filename>/srv/www/htdocs</filename> oder
|
||||
<filename>/var/www/</filename>) entpackt:</para>
|
||||
7ee506b3 | Moritz Bunkus | |||
5fa26f9a | Moritz Bunkus | <programlisting>cd /var/www
|
||
a04828ca | Geoffrey Richardson | tar xvzf kivitendo-erp-3.4.1.tgz</programlisting>
|
||
7ee506b3 | Moritz Bunkus | |||
5fa26f9a | Moritz Bunkus | <para>Wechseln Sie in das entpackte Verzeichnis:</para>
|
||
7ee506b3 | Moritz Bunkus | |||
5fa26f9a | Moritz Bunkus | <programlisting>cd kivitendo-erp</programlisting>
|
||
7ee506b3 | Moritz Bunkus | |||
<para>Alternativ können Sie auch einen Alias in der
|
||||
Webserverkonfiguration benutzen, um auf das tatsächliche
|
||||
Installationsverzeichnis zu verweisen.</para>
|
||||
0e14ae06 | Andreas Zenklusen | <para>Bei einer Neuinstallation von Version 3.1.0 oder später muß das
|
||
WebDAV Verzeichnis derzeit manuell angelegt werden:</para>
|
||||
d958c7f7 | Geoffrey Richardson | |||
<programlisting>mkdir webdav</programlisting>
|
||||
0e14ae06 | Andreas Zenklusen | <para>Die Verzeichnisse <filename>users</filename>,
|
||
<filename>spool</filename> und <filename>webdav</filename> müssen für
|
||||
den Benutzer beschreibbar sein, unter dem der Webserver läuft. Die
|
||||
restlichen Dateien müssen für diesen Benutzer lesbar sein. Die Benutzer-
|
||||
und Gruppennamen sind bei verschiedenen Distributionen unterschiedlich
|
||||
(z.B. bei Debian/Ubuntu <constant>www-data</constant>, bei Fedora
|
||||
<constant>apache</constant> oder bei OpenSUSE
|
||||
<constant>wwwrun</constant>).</para>
|
||||
7ee506b3 | Moritz Bunkus | |||
<para>Der folgende Befehl ändert den Besitzer für die oben genannten
|
||||
Verzeichnisse auf einem Debian/Ubuntu-System:</para>
|
||||
9785598b | Moritz Bunkus | <programlisting>chown -R www-data users spool webdav</programlisting>
|
||
7ee506b3 | Moritz Bunkus | |||
0e14ae06 | Andreas Zenklusen | <para>Weiterhin muss der Webserver-Benutzer in den Verzeichnissen
|
||
<filename>templates</filename> und <filename>users</filename>
|
||||
Unterverzeichnisse für jeden neuen Benutzer anlegen dürfen, der in
|
||||
kivitendo angelegt wird:</para>
|
||||
7ee506b3 | Moritz Bunkus | |||
9785598b | Moritz Bunkus | <programlisting>chown www-data templates users</programlisting>
|
||
0e14ae06 | Andreas Zenklusen | |||
<note>
|
||||
<para>Wir empfehlen eine Installation mittels des Versionsmanagager
|
||||
git. Hierfür muss ein git-Client installiert sein. Damit ist man sehr
|
||||
viel flexibler für zukünftige Upgrades. Installations-Anleitung (bitte
|
||||
die Pfade anpassen) bspw. wie folgt: <programlisting>cd /usr/local/src/
|
||||
524bf98c | Jan Büren | git clone https://github.com/kivitendo/kivitendo-erp.git
|
||
cd kivitendo-erp/
|
||||
git checkout `git tag -l | egrep -ve "(beta|rc)" | tail -1`</programlisting>
|
||||
0e14ae06 | Andreas Zenklusen | Sehr sinnvoll ist es, direkt im Anschluss einen eigenen Branch zu
|
||
erzeugen, um bspw. seine eigenen Druckvorlagen-Anpassungen damit zu
|
||||
verwalten. Hierfür reicht ein simples <programlisting> git checkout -b meine_eigenen_änderungen</programlisting>
|
||||
nach dem letzten Kommando (weiterführende Informationen <ulink
|
||||
url="http://git-scm.com/book/en/v2/Getting-Started-Git-Basics">getting
|
||||
started with git</ulink>).</para>
|
||||
</note>
|
||||
7ee506b3 | Moritz Bunkus | </sect1>
|
||
<sect1 id="config.config-file">
|
||||
5fa26f9a | Moritz Bunkus | <title>kivitendo-Konfigurationsdatei</title>
|
||
7ee506b3 | Moritz Bunkus | |||
3adb0cb7 | Moritz Bunkus | <sect2 id="config.config-file.introduction"
|
||
xreflabel="Einführung in die Konfigurationsdatei">
|
||||
<title>Einführung</title>
|
||||
7ee506b3 | Moritz Bunkus | |||
0e14ae06 | Andreas Zenklusen | <para>In kivitendo gibt es nur noch eine Konfigurationsdatei, die
|
||
benötigt wird: <filename>config/kivitendo.conf</filename> (kurz: "die
|
||||
Hauptkonfigurationsdatei"). Diese muss bei der Erstinstallation von
|
||||
kivitendo bzw. der Migration von älteren Versionen angelegt
|
||||
3adb0cb7 | Moritz Bunkus | werden.</para>
|
||
7ee506b3 | Moritz Bunkus | |||
3adb0cb7 | Moritz Bunkus | <para>Als Vorlage dient die Datei
|
||
5fa26f9a | Moritz Bunkus | <filename>config/kivitendo.conf.default</filename> (kurz: "die
|
||
3adb0cb7 | Moritz Bunkus | Default-Datei"):</para>
|
||
7ee506b3 | Moritz Bunkus | |||
5fa26f9a | Moritz Bunkus | <programlisting>$ cp config/kivitendo.conf.default config/kivitendo.conf</programlisting>
|
||
7ee506b3 | Moritz Bunkus | |||
3adb0cb7 | Moritz Bunkus | <para>Die Default-Datei wird immer zuerst eingelesen. Werte, die in
|
||
der Hauptkonfigurationsdatei stehen, überschreiben die Werte aus der
|
||||
Default-Datei. Die Hauptkonfigurationsdatei muss also nur die
|
||||
9785598b | Moritz Bunkus | Abschnitte und Werte enthalten, die von denen der Default-Datei
|
||
3adb0cb7 | Moritz Bunkus | abweichen.</para>
|
||
7ee506b3 | Moritz Bunkus | |||
5fa26f9a | Moritz Bunkus | <note>
|
||
0e14ae06 | Andreas Zenklusen | <para>Vor der Umbenennung in kivitendo hieß diese Datei noch
|
||
<filename>config/lx_office.conf</filename>. Aus Gründen der
|
||||
Kompatibilität wird diese Datei eingelesen, sofern die Datei
|
||||
<filename>config/kivitendo.conf</filename> nicht existiert.</para>
|
||||
5fa26f9a | Moritz Bunkus | </note>
|
||
3adb0cb7 | Moritz Bunkus | <para>Diese Hauptkonfigurationsdatei ist dann eine
|
||
installationsspezifische Datei, d.h. sie enthält bspw. lokale
|
||||
Passwörter und wird auch nicht im Versionsmanagement (git)
|
||||
verwaltet.</para>
|
||||
7ee506b3 | Moritz Bunkus | |||
3adb0cb7 | Moritz Bunkus | <para>Die Konfiguration ist ferner serverabhängig, d.h. für alle
|
||
Mandaten, bzw. Datenbanken gleich.</para>
|
||||
</sect2>
|
||||
7ee506b3 | Moritz Bunkus | |||
3adb0cb7 | Moritz Bunkus | <sect2 id="config.config-file.sections-parameters">
|
||
<title>Abschnitte und Parameter</title>
|
||||
7ee506b3 | Moritz Bunkus | |||
3adb0cb7 | Moritz Bunkus | <para>Die Konfigurationsdatei besteht aus mehreren Teilen, die
|
||
entsprechend kommentiert sind:</para>
|
||||
7ee506b3 | Moritz Bunkus | |||
3adb0cb7 | Moritz Bunkus | <itemizedlist>
|
||
0e14ae06 | Andreas Zenklusen | <listitem>
|
||
<para><literal>authentication</literal> (siehe Abschnitt "<xref
|
||||
linkend="Benutzerauthentifizierung-und-Administratorpasswort"/>"
|
||||
in diesem Kapitel)</para>
|
||||
</listitem>
|
||||
3adb0cb7 | Moritz Bunkus | |||
0e14ae06 | Andreas Zenklusen | <listitem>
|
||
<para><literal>authentication/database</literal></para>
|
||||
</listitem>
|
||||
3adb0cb7 | Moritz Bunkus | |||
0e14ae06 | Andreas Zenklusen | <listitem>
|
||
<para><literal>authentication/ldap</literal></para>
|
||||
</listitem>
|
||||
3adb0cb7 | Moritz Bunkus | |||
0e14ae06 | Andreas Zenklusen | <listitem>
|
||
<para><literal>system</literal></para>
|
||||
</listitem>
|
||||
3adb0cb7 | Moritz Bunkus | |||
0e14ae06 | Andreas Zenklusen | <listitem>
|
||
<para><literal>paths</literal></para>
|
||||
</listitem>
|
||||
7b195af1 | Jan Büren | |||
0e14ae06 | Andreas Zenklusen | <listitem>
|
||
<para><literal>mail_delivery</literal> (siehe Abschnitt "<xref
|
||||
linkend="config.sending-email.smtp"/>)</para>
|
||||
</listitem>
|
||||
3adb0cb7 | Moritz Bunkus | |||
0e14ae06 | Andreas Zenklusen | <listitem>
|
||
<para><literal>applications</literal></para>
|
||||
</listitem>
|
||||
7ee506b3 | Moritz Bunkus | |||
0e14ae06 | Andreas Zenklusen | <listitem>
|
||
<para><literal>environment</literal></para>
|
||||
</listitem>
|
||||
a7121495 | Moritz Bunkus | |||
0e14ae06 | Andreas Zenklusen | <listitem>
|
||
<para><literal>print_templates</literal></para>
|
||||
</listitem>
|
||||
3adb0cb7 | Moritz Bunkus | |||
0e14ae06 | Andreas Zenklusen | <listitem>
|
||
<para><literal>task_server</literal></para>
|
||||
</listitem>
|
||||
3adb0cb7 | Moritz Bunkus | |||
0e14ae06 | Andreas Zenklusen | <listitem>
|
||
<para><literal>periodic_invoices</literal></para>
|
||||
</listitem>
|
||||
3adb0cb7 | Moritz Bunkus | |||
0e14ae06 | Andreas Zenklusen | <listitem>
|
||
<para><literal>self_tests</literal></para>
|
||||
</listitem>
|
||||
7b195af1 | Jan Büren | |||
0e14ae06 | Andreas Zenklusen | <listitem>
|
||
<para><literal>console</literal></para>
|
||||
</listitem>
|
||||
3adb0cb7 | Moritz Bunkus | |||
0e14ae06 | Andreas Zenklusen | <listitem>
|
||
<para><literal>testing</literal></para>
|
||||
</listitem>
|
||||
7b195af1 | Jan Büren | |||
0e14ae06 | Andreas Zenklusen | <listitem>
|
||
<para><literal>testing/database</literal></para>
|
||||
</listitem>
|
||||
7b195af1 | Jan Büren | |||
0e14ae06 | Andreas Zenklusen | <listitem>
|
||
<para><literal>debug</literal></para>
|
||||
</listitem>
|
||||
3adb0cb7 | Moritz Bunkus | </itemizedlist>
|
||
7ee506b3 | Moritz Bunkus | |||
3adb0cb7 | Moritz Bunkus | <para>Die üblicherweise wichtigsten Parameter, die am Anfang
|
||
einzustellen oder zu kontrollieren sind, sind:</para>
|
||||
<programlisting>[authentication]
|
||||
7ee506b3 | Moritz Bunkus | admin_password = geheim
|
||
[authentication/database]
|
||||
host = localhost
|
||||
port = 5432
|
||||
5fa26f9a | Moritz Bunkus | db = kivitendo_auth
|
||
7ee506b3 | Moritz Bunkus | user = postgres
|
||
2e917eea | Andreas Rudin | password =
|
||
[system]
|
||||
default_manager = german</programlisting>
|
||||
7ee506b3 | Moritz Bunkus | |||
2e917eea | Andreas Rudin | <para>Für kivitendo Installationen in der Schweiz sollte hier <varname>german</varname>
|
||
durch <varname>swiss</varname> ersetzt werden.</para>
|
||||
<para>Die Einstellung <varname>default_manager = swiss</varname> bewirkt:</para>
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
5ad10035 | Moritz Bunkus | <para>Beim Erstellen einer neuen Datenbank in der kivitendo Administration
|
||
werden automatisch die Standard-Werte für die Schweiz voreingestellt:
|
||||
Währung CHF, 5er-Rundung, Schweizer KMU-Kontenplan, Sollversteuerung,
|
||||
2e917eea | Andreas Rudin | Aufwandsmethode, Bilanzierung (die Werte können aber manuell angepasst werden).</para>
|
||
</listitem>
|
||||
<listitem>
|
||||
<para>Einstellen der Standardkonten für Rundungserträge und -aufwendungen
|
||||
(unter Mandantenkonfiguration → Standardkonten veränderbar)</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>das verwendete Zahlenformat wird auf <varname>1'000.00</varname> eingestellt
|
||||
5ad10035 | Moritz Bunkus | (unter Programm → Benutzereinstellungen veränderbar)</para>
|
||
2e917eea | Andreas Rudin | </listitem>
|
||
<listitem>
|
||||
5ad10035 | Moritz Bunkus | <para>DATEV-Automatik und UStVA werden nicht angezeigt, Erfolgsrechnung
|
||
2e917eea | Andreas Rudin | ersetzt GUV ( unter Mandantenkonfiguration → Features veränderbar)</para>
|
||
</listitem>
|
||||
</itemizedlist>
|
||||
5ad10035 | Moritz Bunkus | |||
3adb0cb7 | Moritz Bunkus | <para>Nutzt man wiederkehrende Rechnungen, kann man unter
|
||
<varname>[periodic_invoices]</varname> den Login eines Benutzers
|
||||
angeben, der nach Erstellung der Rechnungen eine entsprechende E-Mail
|
||||
mit Informationen über die erstellten Rechnungen bekommt.</para>
|
||||
0e14ae06 | Andreas Zenklusen | <para>kivitendo bringt eine eigene Komponente zur zeitgesteuerten
|
||
Ausführung bestimmter Aufgaben mit, den <link
|
||||
linkend="config.task-server">Taskserver</link>. Er wird u.a. für
|
||||
Features wie die <link
|
||||
linkend="features.periodic-invoices">wiederkehrenden Rechnungen</link>
|
||||
benötigt, erledigt aber auch andere erforderliche Aufgaben und muss
|
||||
daher in Betrieb genommen werden. Seine Einrichtung wird im Abschnitt
|
||||
<link linkend="config.task-server">Task-Server</link> genauer
|
||||
beschrieben.</para>
|
||||
3adb0cb7 | Moritz Bunkus | |||
<para>Für Entwickler finden sich unter <varname>[debug]</varname>
|
||||
wichtige Funktionen, um die Fehlersuche zu erleichtern.</para>
|
||||
</sect2>
|
||||
<sect2 id="config.config-file.prior-versions">
|
||||
<title>Versionen vor 2.6.3</title>
|
||||
5fa26f9a | Moritz Bunkus | <para>In älteren kivitendo Versionen gab es im Verzeichnis
|
||
3adb0cb7 | Moritz Bunkus | <filename>config</filename> die Dateien
|
||
<filename>authentication.pl</filename> und
|
||||
<filename>lx-erp.conf</filename>, die jeweils Perl-Dateien waren. Es
|
||||
gab auch die Möglichkeit, eine lokale Version der Konfigurationsdatei
|
||||
zu erstellen (<filename>lx-erp-local.conf</filename>). Dies ist ab
|
||||
2.6.3 nicht mehr möglich, aber auch nicht mehr nötig.</para>
|
||||
5fa26f9a | Moritz Bunkus | <para>Beim Update von einer kivitendo-Version vor 2.6.3 auf 2.6.3 oder
|
||
3adb0cb7 | Moritz Bunkus | jünger müssen die Einstellungen aus den alten Konfigurationsdateien
|
||
manuell übertragen und die alten Konfigurationsdateien anschließend
|
||||
5fa26f9a | Moritz Bunkus | gelöscht oder verschoben werden. Ansonsten zeigt kivitendo eine
|
||
3adb0cb7 | Moritz Bunkus | entsprechende Fehlermeldung an.</para>
|
||
</sect2>
|
||||
7ee506b3 | Moritz Bunkus | </sect1>
|
||
<sect1 id="Anpassung-der-PostgreSQL-Konfiguration">
|
||||
<title>Anpassung der PostgreSQL-Konfiguration</title>
|
||||
<para>PostgreSQL muss auf verschiedene Weisen angepasst werden.</para>
|
||||
<sect2 id="Zeichensätze-die-Verwendung-von-UTF-8">
|
||||
dbda14c2 | Moritz Bunkus | <title>Zeichensätze/die Verwendung von Unicode/UTF-8</title>
|
||
7ee506b3 | Moritz Bunkus | |||
0e14ae06 | Andreas Zenklusen | <para>kivitendo setzt zwingend voraus, dass die Datenbank
|
||
Unicode/UTF-8 als Encoding einsetzt. Bei aktuellen
|
||||
Serverinstallationen braucht man hier meist nicht einzugreifen.</para>
|
||||
b68213ba | root | |||
0e14ae06 | Andreas Zenklusen | <para>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:</para>
|
||||
b68213ba | root | |||
<programlisting>su postgres
|
||||
echo '\l' | psql
|
||||
exit </programlisting>
|
||||
dbda14c2 | Moritz Bunkus | <para>Andernfalls ist es notwendig, einen neuen Datenbankcluster mit
|
||
Unicode-Encoding anzulegen und diesen zu verwenden. Unter Debian und
|
||||
9ef71acd | Moritz Bunkus | Ubuntu kann dies z.B. für PostgreSQL 9.3 mit dem folgenden Befehl
|
||
3adb0cb7 | Moritz Bunkus | getan werden:</para>
|
||
7ee506b3 | Moritz Bunkus | |||
9ef71acd | Moritz Bunkus | <programlisting>pg_createcluster --locale=de_DE.UTF-8 --encoding=UTF-8 9.3 clustername</programlisting>
|
||
7ee506b3 | Moritz Bunkus | |||
3adb0cb7 | Moritz Bunkus | <para>Die Datenbankversionsnummer muss an die tatsächlich verwendete
|
||
Versionsnummer angepasst werden.</para>
|
||||
7ee506b3 | Moritz Bunkus | |||
<para>Unter anderen Distributionen gibt es ähnliche Methoden.</para>
|
||||
3adb0cb7 | Moritz Bunkus | <para>Das Encoding einer Datenbank kann in <command>psql</command> mit
|
||
<literal>\l</literal> geprüft werden.</para>
|
||||
7ee506b3 | Moritz Bunkus | </sect2>
|
||
<sect2 id="Änderungen-an-Konfigurationsdateien">
|
||||
<title>Änderungen an Konfigurationsdateien</title>
|
||||
90baed86 | Moritz Bunkus | <para>In der Datei <filename>postgresql.conf</filename>, die je nach
|
||
7ee506b3 | Moritz Bunkus | Distribution in verschiedenen Verzeichnissen liegen kann (z.B.
|
||
90baed86 | Moritz Bunkus | <filename>/var/lib/pgsql/data/</filename> oder
|
||
a3053fa7 | Geoffrey Richardson | <filename>/etc/postgresql/</filename>), muss sichergestellt werden,
|
||
3adb0cb7 | Moritz Bunkus | dass TCP/IP-Verbindungen aktiviert sind. Das Verhalten wird über den
|
||
90baed86 | Moritz Bunkus | Parameter <varname>listen_address</varname> gesteuert. Laufen
|
||
5fa26f9a | Moritz Bunkus | PostgreSQL und kivitendo auf demselben Rechner, so kann dort der Wert
|
||
7ee506b3 | Moritz Bunkus | <literal>localhost</literal> verwendet werden. Andernfalls müssen
|
||
Datenbankverbindungen auch von anderen Rechnern aus zugelassen werden,
|
||||
90baed86 | Moritz Bunkus | was mit dem Wert <literal>*</literal> geschieht.</para>
|
||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <para>In der Datei <filename>pg_hba.conf</filename>, die im gleichen
|
||
3adb0cb7 | Moritz Bunkus | Verzeichnis wie die <filename>postgresql.conf</filename> zu finden
|
||
a3053fa7 | Geoffrey Richardson | sein sollte, müssen die Berechtigungen für den Zugriff geändert
|
||
0e14ae06 | Andreas Zenklusen | werden. Hier gibt es mehrere Möglichkeiten. Sinnvoll ist es nur die
|
||
nötigen Verbindungen immer zuzulassen, für eine lokal laufende
|
||||
Datenbank zum Beispiel:</para>
|
||||
7ee506b3 | Moritz Bunkus | |||
5fa26f9a | Moritz Bunkus | <programlisting>local all kivitendo password
|
||
host all kivitendo 127.0.0.1 255.255.255.255 password</programlisting>
|
||||
7ee506b3 | Moritz Bunkus | </sect2>
|
||
<sect2 id="Erweiterung-für-servergespeicherte-Prozeduren">
|
||||
<title>Erweiterung für servergespeicherte Prozeduren</title>
|
||||
<para>In der Datenbank <literal>template1</literal> muss die
|
||||
Unterstützung für servergespeicherte Prozeduren eingerichet werden.
|
||||
b68213ba | root | Melden Sie sich dafür als Benutzer “postgres” an der Datenbank an:
|
||
<programlisting>su - postgres
|
||||
0e14ae06 | Andreas Zenklusen | psql template1</programlisting> führen Sie die folgenden Kommandos aus:</para>
|
||
7ee506b3 | Moritz Bunkus | |||
bd1f0a5a | Sven Schöling | <programlisting>CREATE EXTENSION IF NOT EXISTS plpgsql;
|
||
b68213ba | root | \q</programlisting>
|
||
bd1f0a5a | Sven Schöling | |||
0e14ae06 | Andreas Zenklusen | <note>
|
||
<para><literal>CREATE EXTENSION</literal> ist seit Version 9.1 die
|
||||
bevorzugte Syntax um die Sprache <literal>plpgsql</literal>
|
||||
anzulegen. In diesen Versionen ist die Extension meist auch schon
|
||||
vorhanden. Sollten Sie eine ältere Version von Postgres haben,
|
||||
benutzen Sie stattdessen den folgenden Befehl.</para>
|
||||
bd1f0a5a | Sven Schöling | |||
0e14ae06 | Andreas Zenklusen | <programlisting>CREATE LANGUAGE 'plpgsql';
|
||
\q</programlisting>
|
||||
</note>
|
||||
7ee506b3 | Moritz Bunkus | </sect2>
|
||
<sect2 id="Datenbankbenutzer-anlegen">
|
||||
<title>Datenbankbenutzer anlegen</title>
|
||||
<para>Wenn Sie nicht den Datenbanksuperuser “postgres” zum Zugriff
|
||||
benutzen wollen, so sollten Sie bei PostgreSQL einen neuen Benutzer
|
||||
anlegen. Ein Beispiel, wie Sie einen neuen Benutzer anlegen
|
||||
können:</para>
|
||||
0e14ae06 | Andreas Zenklusen | <para>Die Frage, ob der neue User Superuser sein soll, können Sie mit
|
||
nein beantworten, genauso ist die Berechtigung neue User (Roles) zu
|
||||
generieren nicht nötig.</para>
|
||||
<programlisting>su - postgres
|
||||
b68213ba | root | createuser -d -P kivitendo
|
||
exit</programlisting>
|
||||
7ee506b3 | Moritz Bunkus | |||
<para>Wenn Sie später einen Datenbankzugriff konfigurieren, verändern
|
||||
0e14ae06 | Andreas Zenklusen | Sie den evtl. voreingestellten Benutzer “postgres” auf “kivitendo”
|
||
bzw. den hier gewählten Benutzernamen.</para>
|
||||
7ee506b3 | Moritz Bunkus | </sect2>
|
||
</sect1>
|
||||
<sect1 id="Apache-Konfiguration">
|
||||
<title>Webserver-Konfiguration</title>
|
||||
<sect2>
|
||||
<title>Grundkonfiguration mittels CGI</title>
|
||||
<note>
|
||||
<para>Für einen deutlichen Performanceschub sorgt die Ausführung
|
||||
mittels FastCGI/FCGI. Die Einrichtung wird ausführlich im Abschnitt
|
||||
0e14ae06 | Andreas Zenklusen | <xref linkend="Apache-Konfiguration.FCGI"/> beschrieben.</para>
|
||
7ee506b3 | Moritz Bunkus | </note>
|
||
<para>Der Zugriff auf das Programmverzeichnis muss in der Apache
|
||||
Webserverkonfigurationsdatei <literal>httpd.conf</literal> eingestellt
|
||||
werden. Fügen Sie den folgenden Abschnitt dieser Datei oder einer
|
||||
anderen Datei hinzu, die beim Starten des Webservers eingelesen
|
||||
wird:</para>
|
||||
8ce96333 | Sven Schöling | <programlisting>AliasMatch ^/kivitendo-erp/[^/]+\.pl /var/www/kivitendo-erp/dispatcher.pl
|
||
5b5cdc9f | Bernd Bleßmann | Alias /kivitendo-erp/ /var/www/kivitendo-erp/
|
||
90baed86 | Moritz Bunkus | |||
5fa26f9a | Moritz Bunkus | <Directory /var/www/kivitendo-erp>
|
||
8ce96333 | Sven Schöling | AddHandler cgi-script .pl
|
||
6f36a812 | Moritz Bunkus | Options ExecCGI Includes FollowSymlinks
|
||
90baed86 | Moritz Bunkus | </Directory>
|
||
5fa26f9a | Moritz Bunkus | <Directory /var/www/kivitendo-erp/users>
|
||
90baed86 | Moritz Bunkus | Order Deny,Allow
|
||
Deny from All
|
||||
</Directory></programlisting>
|
||||
7ee506b3 | Moritz Bunkus | |||
<para>Ersetzen Sie dabei die Pfade durch diejenigen, in die Sie vorher
|
||||
5fa26f9a | Moritz Bunkus | das kivitendo-Archiv entpacket haben.</para>
|
||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <note>
|
||
3adb0cb7 | Moritz Bunkus | <para>Vor den einzelnen Optionen muss bei einigen Distributionen ein
|
||
Plus ‘<literal>+</literal>’ gesetzt werden.</para>
|
||||
0e14ae06 | Andreas Zenklusen | |||
<para>Bei einigen Distribution (Ubuntu ab 14.04, Debian ab 8.2) muss
|
||||
noch explizit das cgi-Modul mittels <programlisting>a2enmod cgi</programlisting>
|
||||
aktiviert werden.</para>
|
||||
90baed86 | Moritz Bunkus | </note>
|
||
7ee506b3 | Moritz Bunkus | |||
<para>Auf einigen Webservern werden manchmal die Grafiken und
|
||||
Style-Sheets nicht ausgeliefert. In solchen Fällen hat es oft
|
||||
geholfen, die folgende Option in die Konfiguration aufzunehmen:</para>
|
||||
90baed86 | Moritz Bunkus | <programlisting>EnableSendfile Off</programlisting>
|
||
7ee506b3 | Moritz Bunkus | </sect2>
|
||
<sect2 id="Apache-Konfiguration.FCGI"
|
||||
xreflabel="Konfiguration für FastCGI/FCGI">
|
||||
<title>Konfiguration für FastCGI/FCGI</title>
|
||||
<sect3 id="Apache-Konfiguration.FCGI.WasIstEs">
|
||||
<title>Was ist FastCGI?</title>
|
||||
<para>Direkt aus <ulink
|
||||
url="http://de.wikipedia.org/wiki/FastCGI">Wikipedia</ulink>
|
||||
kopiert:</para>
|
||||
<para><citation> FastCGI ist ein Standard für die Einbindung
|
||||
externer Software zur Generierung dynamischer Webseiten in einem
|
||||
Webserver. FastCGI ist vergleichbar zum Common Gateway Interface
|
||||
(CGI), wurde jedoch entwickelt, um dessen Performance-Probleme zu
|
||||
umgehen. </citation></para>
|
||||
</sect3>
|
||||
<sect3 id="Apache-Konfiguration.FCGI.Warum">
|
||||
<title>Warum FastCGI?</title>
|
||||
5fa26f9a | Moritz Bunkus | <para>Perl Programme (wie kivitendo eines ist) werden nicht statisch
|
||
7ee506b3 | Moritz Bunkus | kompiliert. Stattdessen werden die Quelldateien bei jedem Start
|
||
übersetzt, was bei kurzen Laufzeiten einen Großteil der Laufzeit
|
||||
ausmacht. Während SQL Ledger einen Großteil der Funktionalität in
|
||||
einzelne Module kapselt, um immer nur einen kleinen Teil laden zu
|
||||
5fa26f9a | Moritz Bunkus | müssen, ist die Funktionalität von kivitendo soweit gewachsen, dass
|
||
7ee506b3 | Moritz Bunkus | immer mehr Module auf den Rest des Programms zugreifen. Zusätzlich
|
||
benutzen wir umfangreiche Bibliotheken um Funktionaltät nicht selber
|
||||
entwickeln zu müssen, die zusätzliche Ladezeit kosten. All dies
|
||||
5fa26f9a | Moritz Bunkus | führt dazu dass ein kivitendo Aufruf der Kernmasken mittlerweile
|
||
7ee506b3 | Moritz Bunkus | deutlich länger dauert als früher, und dass davon 90% für das Laden
|
||
der Module verwendet wird.</para>
|
||||
<para>Mit FastCGI werden nun die Module einmal geladen, und danach
|
||||
wird nur die eigentliche Programmlogik ausgeführt.</para>
|
||||
</sect3>
|
||||
<sect3 id="Apache-Konfiguration.FCGI.WebserverUndPlugin">
|
||||
<title>Getestete Kombinationen aus Webservern und Plugin</title>
|
||||
<para>Folgende Kombinationen sind getestet:</para>
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para>Apache 2.2.11 (Ubuntu) und mod_fcgid.</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
d63ea7c6 | Jan Büren | <para>Apache 2.2.11 / 2.2.22 (Ubuntu) und mod_fastcgi.</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
818499d9 | Geoffrey Richardson | |||
<listitem>
|
||||
<para>Apache 2.4.7 (Ubuntu 14.04.2 LTS) und mod_fcgid.</para>
|
||||
</listitem>
|
||||
7ee506b3 | Moritz Bunkus | </itemizedlist>
|
||
<para>Dabei wird mod_fcgid empfohlen, weil mod_fastcgi seit geraumer
|
||||
Zeit nicht mehr weiter entwickelt wird. Im Folgenden wird auf
|
||||
mod_fastcgi nicht mehr explizit eingegangen.</para>
|
||||
<para>Als Perl Backend wird das Modul <filename>FCGI.pm</filename>
|
||||
verwendet.</para>
|
||||
<warning>
|
||||
0e14ae06 | Andreas Zenklusen | <para>FCGI-Versionen ab 0.69 und bis zu 0.71 inklusive sind extrem
|
||
strict in der Behandlung von Unicode, und verweigern bestimmte
|
||||
Eingaben von kivitendo. Falls es Probleme mit Umlauten in Ihrer
|
||||
Installation gibt, muss zwingend Version 0.68 oder aber Version
|
||||
0.72 und neuer eingesetzt werden.</para>
|
||||
7ee506b3 | Moritz Bunkus | |||
0e14ae06 | Andreas Zenklusen | <para>Mit <ulink url="http://www.cpan.org">CPAN</ulink> lässt sie
|
||
sich die Vorgängerversion wie folgt installieren:</para>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <programlisting>force install M/MS/MSTROUT/FCGI-0.68.tar.gz</programlisting>
|
||
</warning>
|
||||
7ee506b3 | Moritz Bunkus | </sect3>
|
||
<sect3 id="Apache-Konfiguration.FCGI.Konfiguration">
|
||||
<title>Konfiguration des Webservers</title>
|
||||
5fa26f9a | Moritz Bunkus | <para>Bevor Sie versuchen, eine kivitendo Installation unter FCGI
|
||
818499d9 | Geoffrey Richardson | laufen zu lassen, empfiehlt es sich die Installation ersteinmal
|
||
7ee506b3 | Moritz Bunkus | unter CGI aufzusetzen. FCGI macht es nicht einfach Fehler zu
|
||
debuggen die beim ersten aufsetzen auftreten können. Sollte die
|
||||
Installation schon funktionieren, lesen Sie weiter.</para>
|
||||
<para>Zuerst muss das FastCGI-Modul aktiviert werden. Dies kann
|
||||
unter Debian/Ubuntu z.B. mit folgendem Befehl geschehen:</para>
|
||||
<programlisting>a2enmod fcgid</programlisting>
|
||||
5fa26f9a | Moritz Bunkus | <para>Die Konfiguration für die Verwendung von kivitendo mit FastCGI
|
||
7ee506b3 | Moritz Bunkus | erfolgt durch Anpassung der vorhandenen <function>Alias</function>-
|
||
und <function>Directory</function>-Direktiven. Dabei wird zwischen
|
||||
5fa26f9a | Moritz Bunkus | dem Installationspfad von kivitendo im Dateisystem
|
||
("<filename>/path/to/kivitendo-erp</filename>") und der URL
|
||||
unterschieden, unter der kivitendo im Webbrowser erreichbar ist
|
||||
("<filename>/url/for/kivitendo-erp</filename>").</para>
|
||||
7ee506b3 | Moritz Bunkus | |||
<para>Folgender Konfigurationsschnipsel funktioniert mit
|
||||
mod_fastcgi:</para>
|
||||
5fa26f9a | Moritz Bunkus | <programlisting>AliasMatch ^/url/for/kivitendo-erp/[^/]+\.pl /path/to/kivitendo-erp/dispatcher.fcgi
|
||
Alias /url/for/kivitendo-erp/ /path/to/kivitendo-erp/
|
||||
7ee506b3 | Moritz Bunkus | |||
5fa26f9a | Moritz Bunkus | <Directory /path/to/kivitendo-erp>
|
||
7ee506b3 | Moritz Bunkus | AllowOverride All
|
||
Options ExecCGI Includes FollowSymlinks
|
||||
524bf98c | Jan Büren | Require all granted
|
||
7ee506b3 | Moritz Bunkus | </Directory>
|
||
5fa26f9a | Moritz Bunkus | <DirectoryMatch /path/to/kivitendo-erp/users>
|
||
e63bbc9f | Sven Schöling | Require all denied
|
||
7ee506b3 | Moritz Bunkus | </DirectoryMatch></programlisting>
|
||
818499d9 | Geoffrey Richardson | <warning>
|
||
0e14ae06 | Andreas Zenklusen | <para>Wer einen älteren Apache als Version 2.4 im Einsatz hat,
|
||
muss entsprechend die Syntax der Directorydirektiven verändert.
|
||||
Statt</para>
|
||||
<programlisting>Require all granted</programlisting>
|
||||
<para>muß man Folgendes einstellen:</para>
|
||||
<programlisting>
|
||||
818499d9 | Geoffrey Richardson | Order Allow,Deny
|
||
Allow from All </programlisting>
|
||||
e63bbc9f | Sven Schöling | |||
<para>und statt</para>
|
||||
<programlisting>Require all denied</programlisting>
|
||||
<para>muss stehen:</para>
|
||||
<programlisting>
|
||||
Order Deny,Allow
|
||||
Deny from All </programlisting>
|
||||
818499d9 | Geoffrey Richardson | </warning>
|
||
b014f096 | Bernd Bleßmann | <para>Seit mod_fcgid-Version 2.3.6 gelten sehr kleine Grenzen für
|
||
7ee506b3 | Moritz Bunkus | die maximale Größe eines Requests. Diese sollte wie folgt
|
||
hochgesetzt werden:</para>
|
||||
<programlisting>FcgidMaxRequestLen 10485760</programlisting>
|
||||
818499d9 | Geoffrey Richardson | <para>Das Ganze sollte dann so aussehen:</para>
|
||
7ee506b3 | Moritz Bunkus | |||
<programlisting>AddHandler fcgid-script .fpl
|
||||
5fa26f9a | Moritz Bunkus | AliasMatch ^/url/for/kivitendo-erp/[^/]+\.pl /path/to/kivitendo-erp/dispatcher.fpl
|
||
Alias /url/for/kivitendo-erp/ /path/to/kivitendo-erp/
|
||||
7ee506b3 | Moritz Bunkus | FcgidMaxRequestLen 10485760
|
||
5fa26f9a | Moritz Bunkus | <Directory /path/to/kivitendo-erp>
|
||
7ee506b3 | Moritz Bunkus | AllowOverride All
|
||
Options ExecCGI Includes FollowSymlinks
|
||||
Order Allow,Deny
|
||||
Allow from All
|
||||
</Directory>
|
||||
5fa26f9a | Moritz Bunkus | <DirectoryMatch /path/to/kivitendo-erp/users>
|
||
7ee506b3 | Moritz Bunkus | Order Deny,Allow
|
||
Deny from All
|
||||
</DirectoryMatch></programlisting>
|
||||
<para>Hierdurch wird nur ein zentraler Dispatcher gestartet. Alle
|
||||
Zugriffe auf die einzelnen Scripte werden auf diesen umgeleitet.
|
||||
Dadurch, dass zur Laufzeit öfter mal Scripte neu geladen werden,
|
||||
gibt es hier kleine Performance-Einbußen.</para>
|
||||
5fa26f9a | Moritz Bunkus | <para>Es ist möglich, die gleiche kivitendo Version parallel unter
|
||
7ee506b3 | Moritz Bunkus | CGI und FastCGI zu betreiben. Dafür bleiben die Directorydirektiven
|
||
wie oben beschrieben, die URLs werden aber umgeleitet:</para>
|
||||
<programlisting># Zugriff über CGI
|
||||
5fa26f9a | Moritz Bunkus | Alias /url/for/kivitendo-erp /path/to/kivitendo-erp
|
||
7ee506b3 | Moritz Bunkus | |||
# Zugriff mit mod_fcgid:
|
||||
5fa26f9a | Moritz Bunkus | AliasMatch ^/url/for/kivitendo-erp-fcgid/[^/]+\.pl /path/to/kivitendo-erp/dispatcher.fpl
|
||
Alias /url/for/kivitendo-erp-fcgid/ /path/to/kivitendo-erp/</programlisting>
|
||||
90baed86 | Moritz Bunkus | |||
5fa26f9a | Moritz Bunkus | <para>Dann ist unter <filename>/url/for/kivitendo-erp/</filename>
|
||
3adb0cb7 | Moritz Bunkus | die normale Version erreichbar, und unter
|
||
5fa26f9a | Moritz Bunkus | <constant>/url/for/kivitendo-erp-fcgid/</constant> die
|
||
3adb0cb7 | Moritz Bunkus | FastCGI-Version.</para>
|
||
7ee506b3 | Moritz Bunkus | </sect3>
|
||
</sect2>
|
||||
0e14ae06 | Andreas Zenklusen | |||
eead7ecd | Jan Büren | <sect2>
|
||
<title>Weitergehende Konfiguration</title>
|
||||
0e14ae06 | Andreas Zenklusen | |||
<para>Für einen deutlichen Sicherheitsmehrwert sorgt die Ausführung
|
||||
von kivitendo nur über https-verschlüsselten Verbindungen, sowie
|
||||
weiteren Zusatzmassnahmen, wie beispielsweise Basic Authenticate. Die
|
||||
Konfigurationsmöglichkeiten sprengen allerdings den Rahmen dieser
|
||||
Anleitung, hier ein Hinweis auf einen entsprechenden <ulink
|
||||
url="http://redmine.kivitendo-premium.de/boards/1/topics/142">Foreneintrag
|
||||
(Stand Sept. 2015)</ulink></para>
|
||||
eead7ecd | Jan Büren | </sect2>
|
||
7ee506b3 | Moritz Bunkus | </sect1>
|
||
6023717e | Moritz Bunkus | <sect1 id="config.task-server">
|
||
7ee506b3 | Moritz Bunkus | <title>Der Task-Server</title>
|
||
0e14ae06 | Andreas Zenklusen | <para>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.</para>
|
||||
7ee506b3 | Moritz Bunkus | |||
0e14ae06 | Andreas Zenklusen | <para>Der Task-Server muss einmalig global in der Konfigurationsdatei
|
||
konfiguriert werden. Danach wird er für jeden Mandanten, für den er
|
||||
laufen soll, in der Adminsitrationsmaske eingeschaltet.</para>
|
||||
c6dd542b | Moritz Bunkus | |||
0e14ae06 | Andreas Zenklusen | <para>Beachten Sie, dass der Task-Server in den Boot-Vorgang Ihres
|
||
Servers integriert werden muss, damit er automatisch gestartet wird.
|
||||
Dies kann kivitendo nicht für Sie erledigen.</para>
|
||||
c6dd542b | Moritz Bunkus | |||
7ee506b3 | Moritz Bunkus | <sect2 id="Konfiguration-des-Task-Servers">
|
||
<title>Verfügbare und notwendige Konfigurationsoptionen</title>
|
||||
<para>Die Konfiguration erfolgt über den Abschnitt
|
||||
<literal>[task_server]</literal> in der Datei
|
||||
5fa26f9a | Moritz Bunkus | <filename>config/kivitendo.conf</filename>. Die dort verfügbaren
|
||
7ee506b3 | Moritz Bunkus | Optionen sind:</para>
|
||
90baed86 | Moritz Bunkus | <variablelist>
|
||
3adb0cb7 | Moritz Bunkus | <varlistentry>
|
||
<term><varname>run_as</varname></term>
|
||||
<listitem>
|
||||
<para>Wird der Server vom Systembenutzer <literal>root</literal>
|
||||
gestartet, so wechselt er auf den mit <literal>run_as</literal>
|
||||
angegebenen Systembenutzer. Der Systembenutzer muss dieselben
|
||||
Lese- und Schreibrechte haben, wie auch der Webserverbenutzer
|
||||
(siehe see <xref
|
||||
0e14ae06 | Andreas Zenklusen | linkend="Manuelle-Installation-des-Programmpaketes"/>). Daher
|
||
c6dd542b | Moritz Bunkus | ist es erforderlich, hier denselben Systembenutzer einzutragen,
|
||
3adb0cb7 | Moritz Bunkus | unter dem auch der Webserver läuft.</para>
|
||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><varname>debug</varname></term>
|
||||
<listitem>
|
||||
<para>Schaltet Debug-Informationen an und aus.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
90baed86 | Moritz Bunkus | </variablelist>
|
||
7ee506b3 | Moritz Bunkus | </sect2>
|
||
c6dd542b | Moritz Bunkus | <sect2 id="Konfiguration-der-Mandanten-fuer-den-Task-Servers">
|
||
<title>Konfiguration der Mandanten für den Task-Server</title>
|
||||
0e14ae06 | Andreas Zenklusen | <para>Ist der Task-Server grundlegend konfiguriert, so muss
|
||
anschließend jeder Mandant, für den der Task-Server laufen soll,
|
||||
einmalig konfiguriert werden. Dazu kann in der Maske zum Bearbeiten
|
||||
von Mandanten im Administrationsbereich eine kivitendo-Benutzerkennung
|
||||
ausgewählt werden, unter der der Task-Server seine Arbeit
|
||||
verrichtet.</para>
|
||||
c6dd542b | Moritz Bunkus | |||
0e14ae06 | Andreas Zenklusen | <para>Ist in dieser Einstellung keine Benutzerkennung ausgewählt, so
|
||
wird der Task-Server für diesen Mandanten keine Aufgaben
|
||||
c6dd542b | Moritz Bunkus | ausführen.</para>
|
||
</sect2>
|
||||
7ee506b3 | Moritz Bunkus | <sect2 id="Einbinden-in-den-Boot-Prozess">
|
||
<title>Automatisches Starten des Task-Servers beim Booten</title>
|
||||
<para>Der Task-Server verhält sich von seinen Optionen her wie ein
|
||||
reguläres SystemV-kompatibles Boot-Script. Außerdem wechselt er beim
|
||||
5fa26f9a | Moritz Bunkus | Starten automatisch in das kivitendo-Installationsverzeichnis.</para>
|
||
7ee506b3 | Moritz Bunkus | |||
<para>Deshalb ist es möglich, ihn durch Setzen eines symbolischen
|
||||
Links aus einem der Runlevel-Verzeichnisse heraus in den Boot-Prozess
|
||||
einzubinden. Da das bei neueren Linux-Distributionen aber nicht
|
||||
zwangsläufig funktioniert, werden auch Start-Scripte mitgeliefert, die
|
||||
anstelle eines symbolischen Links verwendet werden können.</para>
|
||||
<sect3>
|
||||
0e14ae06 | Andreas Zenklusen | <title>SystemV-basierende Systeme (z.B. Debian, ältere OpenSUSE,
|
||
ältere Fedora)</title>
|
||||
7ee506b3 | Moritz Bunkus | |||
<para>Kopieren Sie die Datei
|
||||
c51481eb | Jan Büren | <filename>scripts/boot/system-v/kivitendo-task-server</filename>
|
||
nach <filename>/etc/init.d/kivitendo-task-server</filename>. Passen
|
||||
7ee506b3 | Moritz Bunkus | Sie in der kopierten Datei den Pfad zum Task-Server an (Zeile
|
||
<literal>DAEMON=....</literal>). Binden Sie das Script in den
|
||||
Boot-Prozess ein. Dies ist distributionsabhängig:</para>
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para>Debian-basierende Systeme:</para>
|
||||
dc8fb58c | Moritz Bunkus | <programlisting>update-rc.d kivitendo-task-server defaults
|
||
90baed86 | Moritz Bunkus | # Nur bei Debian Squeeze und neuer:
|
||
dc8fb58c | Moritz Bunkus | insserv kivitendo-task-server</programlisting>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
<listitem>
|
||||
eed85694 | Moritz Bunkus | <para>Ältere OpenSUSE und ältere Fedora:</para>
|
||
7ee506b3 | Moritz Bunkus | |||
dc8fb58c | Moritz Bunkus | <programlisting>chkconfig --add kivitendo-task-server</programlisting>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</itemizedlist>
|
||||
3adb0cb7 | Moritz Bunkus | <para>Danach kann der Task-Server mit dem folgenden Befehl gestartet
|
||
560f9681 | Moritz Bunkus | werden:</para>
|
||
<programlisting>/etc/init.d/kivitendo-task-server start</programlisting>
|
||||
7ee506b3 | Moritz Bunkus | </sect3>
|
||
<sect3>
|
||||
524bf98c | Jan Büren | <title>Upstart-basierende Systeme (z.B. Ubuntu bis 14.04)</title>
|
||
7ee506b3 | Moritz Bunkus | |||
<para>Kopieren Sie die Datei
|
||||
dc8fb58c | Moritz Bunkus | <filename>scripts/boot/upstart/kivitendo-task-server.conf</filename>
|
||
nach <filename>/etc/init/kivitendo-task-server.conf</filename>.
|
||||
7ee506b3 | Moritz Bunkus | Passen Sie in der kopierten Datei den Pfad zum Task-Server an (Zeile
|
||
<literal>exec ....</literal>).</para>
|
||||
3adb0cb7 | Moritz Bunkus | <para>Danach kann der Task-Server mit dem folgenden Befehl gestartet
|
||
560f9681 | Moritz Bunkus | werden:</para>
|
||
<programlisting>service kivitendo-task-server start</programlisting>
|
||||
</sect3>
|
||||
<sect3>
|
||||
7beb6d70 | Moritz Bunkus | <title>systemd-basierende Systeme (z.B. neure openSUSE, neuere
|
||
Fedora, neuere Ubuntu und Debians)</title>
|
||||
560f9681 | Moritz Bunkus | |||
7beb6d70 | Moritz Bunkus | <para>Kopieren Sie die Datei <filename>scripts/boot/systemd/kivitendo-task-server.service</filename> nach
|
||
<filename>/etc/systemd/system/</filename>. Passen Sie in der kopierten Datei den Pfad zum Task-Server an (Zeilen
|
||||
<literal>ExecStart=....</literal> und <literal>ExecStop=...</literal>).</para>
|
||||
560f9681 | Moritz Bunkus | |||
7beb6d70 | Moritz Bunkus | <para>Machen Sie anschließend das Script systemd bekannt, und binden Sie es in den Boot-Prozess ein. Dazu führen Sie die folgenden
|
||
Befehl aus:</para>
|
||||
560f9681 | Moritz Bunkus | |||
7beb6d70 | Moritz Bunkus | <programlisting>systemctl daemon-reload
|
||
systemctl enable kivitendo-task-server.service</programlisting>
|
||||
560f9681 | Moritz Bunkus | |||
7beb6d70 | Moritz Bunkus | <para>Wenn Sie den Task-Server jetzt sofort starten möchten, anstatt den Server neu zu starten, so können Sie das mit dem
|
||
folgenden Befehl tun:</para>
|
||||
560f9681 | Moritz Bunkus | |||
<programlisting>systemctl start kivitendo-task-server.service</programlisting>
|
||||
7ee506b3 | Moritz Bunkus | </sect3>
|
||
</sect2>
|
||||
<sect2 id="Prozesskontrolle">
|
||||
<title>Wie der Task-Server gestartet und beendet wird</title>
|
||||
<para>Der Task-Server wird wie folgt kontrolliert:</para>
|
||||
90baed86 | Moritz Bunkus | <programlisting>./scripts/task_server.pl Befehl</programlisting>
|
||
7ee506b3 | Moritz Bunkus | |||
<para><literal>Befehl</literal> ist dabei eine der folgenden
|
||||
Optionen:</para>
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para><literal>start</literal> startet eine neue Instanz des
|
||||
Task-Servers. Die Prozess-ID wird innerhalb des
|
||||
<filename>users</filename>-Verzeichnisses abgelegt.</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para><literal>stop</literal> beendet einen laufenden
|
||||
Task-Server.</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para><literal>restart</literal> beendet und startet ihn
|
||||
neu.</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para><literal>status</literal> berichtet, ob der Task-Server
|
||||
läuft.</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
<para>Der Task-Server wechselt beim Starten automatisch in das
|
||||
5fa26f9a | Moritz Bunkus | kivitendo-Installationsverzeichnis.</para>
|
||
7ee506b3 | Moritz Bunkus | |||
<para>Dieselben Optionen können auch für die SystemV-basierenden
|
||||
Runlevel-Scripte benutzt werden (siehe oben).</para>
|
||||
</sect2>
|
||||
</sect1>
|
||||
<sect1 id="Benutzerauthentifizierung-und-Administratorpasswort">
|
||||
<title>Benutzerauthentifizierung und Administratorpasswort</title>
|
||||
<para>Informationen über die Einrichtung der Benutzerauthentifizierung,
|
||||
über die Verwaltung von Gruppen und weitere Einstellungen</para>
|
||||
<sect2 id="Grundlagen-zur-Benutzerauthentifizierung">
|
||||
<title>Grundlagen zur Benutzerauthentifizierung</title>
|
||||
5fa26f9a | Moritz Bunkus | <para>kivitendo verwaltet die Benutzerinformationen in einer
|
||
7ee506b3 | Moritz Bunkus | Datenbank, die im folgenden “Authentifizierungsdatenbank” genannt
|
||
wird. Für jeden Benutzer kann dort eine eigene Datenbank für die
|
||||
eigentlichen Finanzdaten hinterlegt sein. Diese beiden Datenbanken
|
||||
können, müssen aber nicht unterschiedlich sein.</para>
|
||||
5fa26f9a | Moritz Bunkus | <para>Im einfachsten Fall gibt es für kivitendo nur eine einzige
|
||
7ee506b3 | Moritz Bunkus | Datenbank, in der sowohl die Benutzerinformationen als auch die Daten
|
||
abgelegt werden.</para>
|
||||
5fa26f9a | Moritz Bunkus | <para>Zusätzlich ermöglicht es kivitendo, dass die Benutzerpasswörter
|
||
7ee506b3 | Moritz Bunkus | entweder gegen die Authentifizierungsdatenbank oder gegen einen
|
||
LDAP-Server überprüft werden.</para>
|
||||
5fa26f9a | Moritz Bunkus | <para>Welche Art der Passwortüberprüfung kivitendo benutzt und wie
|
||
kivitendo die Authentifizierungsdatenbank erreichen kann, wird in der
|
||||
Konfigurationsdatei <filename>config/kivitendo.conf</filename>
|
||||
7ee506b3 | Moritz Bunkus | festgelegt. Diese muss bei der Installation und bei einem Upgrade von
|
||
einer Version vor v2.6.0 angelegt werden. Eine
|
||||
Beispielkonfigurationsdatei
|
||||
5fa26f9a | Moritz Bunkus | <filename>config/kivitendo.conf.default</filename> existiert, die als
|
||
7ee506b3 | Moritz Bunkus | Vorlage benutzt werden kann.</para>
|
||
</sect2>
|
||||
<sect2 id="Administratorpasswort">
|
||||
<title>Administratorpasswort</title>
|
||||
0e14ae06 | Andreas Zenklusen | <para>Das Passwort, das zum Zugriff auf das Administrationsinterface
|
||
von kivitendo benutzt wird, wird ebenfalls in dieser Datei
|
||||
gespeichert. Es kann auch nur dort und nicht mehr im
|
||||
Administrationsinterface selber geändert werden. Der Parameter dazu
|
||||
heißt <varname>admin_password</varname> im Abschnitt
|
||||
<varname>[authentication]</varname>.</para>
|
||||
7ee506b3 | Moritz Bunkus | </sect2>
|
||
<sect2 id="Authentifizierungsdatenbank">
|
||||
<title>Authentifizierungsdatenbank</title>
|
||||
3adb0cb7 | Moritz Bunkus | <para>Die Verbindung zur Authentifizierungsdatenbank wird mit den
|
||
Parametern in <varname>[authentication/database]</varname>
|
||||
konfiguriert. Hier sind die folgenden Parameter anzugeben:</para>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <variablelist>
|
||
3adb0cb7 | Moritz Bunkus | <varlistentry>
|
||
<term><literal>host</literal></term>
|
||||
7ee506b3 | Moritz Bunkus | |||
3adb0cb7 | Moritz Bunkus | <listitem>
|
||
<para>Der Rechnername oder die IP-Adresse des
|
||||
Datenbankservers</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
7ee506b3 | Moritz Bunkus | |||
3adb0cb7 | Moritz Bunkus | <varlistentry>
|
||
<term><literal>port</literal></term>
|
||||
7ee506b3 | Moritz Bunkus | |||
3adb0cb7 | Moritz Bunkus | <listitem>
|
||
<para>Die Portnummer des Datenbankservers, meist 5432</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
7ee506b3 | Moritz Bunkus | |||
3adb0cb7 | Moritz Bunkus | <varlistentry>
|
||
<term><literal>db</literal></term>
|
||||
<listitem>
|
||||
<para>Der Name der Authentifizierungsdatenbank</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><literal>user</literal></term>
|
||||
<listitem>
|
||||
5fa26f9a | Moritz Bunkus | <para>Der Benutzername, mit dem sich kivitendo beim
|
||
3adb0cb7 | Moritz Bunkus | Datenbankserver anmeldet (z.B.
|
||
"<literal>postgres</literal>")</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><literal>password</literal></term>
|
||||
<listitem>
|
||||
<para>Das Passwort für den Datenbankbenutzer</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
90baed86 | Moritz Bunkus | </variablelist>
|
||
7ee506b3 | Moritz Bunkus | |||
5fa26f9a | Moritz Bunkus | <para>Die Datenbank muss noch nicht existieren. kivitendo kann sie
|
||
7ee506b3 | Moritz Bunkus | automatisch anlegen (mehr dazu siehe unten).</para>
|
||
</sect2>
|
||||
<sect2 id="Passwortüberprüfung">
|
||||
<title>Passwortüberprüfung</title>
|
||||
5fa26f9a | Moritz Bunkus | <para>kivitendo unterstützt Passwortüberprüfung auf zwei Arten: gegen
|
||
3adb0cb7 | Moritz Bunkus | die Authentifizierungsdatenbank und gegen einen externen LDAP- oder
|
||
Active-Directory-Server. Welche davon benutzt wird, regelt der
|
||||
Parameter <varname>module</varname> im Abschnitt
|
||||
90baed86 | Moritz Bunkus | <varname>[authentication]</varname>.</para>
|
||
7ee506b3 | Moritz Bunkus | |||
3adb0cb7 | Moritz Bunkus | <para>Sollen die Benutzerpasswörter in der Authentifizierungsdatenbank
|
||
gespeichert werden, so muss der Parameter <varname>module</varname>
|
||||
den Wert <literal>DB</literal> enthalten. In diesem Fall können sowohl
|
||||
9c563fc7 | Geoffrey Richardson | der Administrator als auch die Benutzer selber ihre Passwörter in
|
||
5fa26f9a | Moritz Bunkus | kivitendo ändern.</para>
|
||
7ee506b3 | Moritz Bunkus | |||
3adb0cb7 | Moritz Bunkus | <para>Soll hingegen ein externer LDAP- oder Active-Directory-Server
|
||
benutzt werden, so muss der Parameter <varname>module</varname> auf
|
||||
<literal>LDAP</literal> gesetzt werden. In diesem Fall müssen
|
||||
zusätzliche Informationen über den LDAP-Server im Abschnitt
|
||||
90baed86 | Moritz Bunkus | <literal>[authentication/ldap]</literal> angegeben werden:</para>
|
||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <variablelist>
|
||
3adb0cb7 | Moritz Bunkus | <varlistentry>
|
||
<term><literal>host</literal></term>
|
||||
7ee506b3 | Moritz Bunkus | |||
3adb0cb7 | Moritz Bunkus | <listitem>
|
||
<para>Der Rechnername oder die IP-Adresse des LDAP- oder
|
||||
Active-Directory-Servers. Diese Angabe ist zwingend
|
||||
erforderlich.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
7ee506b3 | Moritz Bunkus | |||
3adb0cb7 | Moritz Bunkus | <varlistentry>
|
||
<term><literal>port</literal></term>
|
||||
7ee506b3 | Moritz Bunkus | |||
3adb0cb7 | Moritz Bunkus | <listitem>
|
||
<para>Die Portnummer des LDAP-Servers; meist 389.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
7ee506b3 | Moritz Bunkus | |||
3adb0cb7 | Moritz Bunkus | <varlistentry>
|
||
<term><literal>tls</literal></term>
|
||||
7ee506b3 | Moritz Bunkus | |||
3adb0cb7 | Moritz Bunkus | <listitem>
|
||
<para>Wenn Verbindungsverschlüsselung gewünscht ist, so diesen
|
||||
Wert auf ‘<literal>1</literal>’ setzen, andernfalls auf
|
||||
‘<literal>0</literal>’ belassen</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
7ee506b3 | Moritz Bunkus | |||
3adb0cb7 | Moritz Bunkus | <varlistentry>
|
||
<term><literal>attribute</literal></term>
|
||||
<listitem>
|
||||
<para>Das LDAP-Attribut, in dem der Benutzername steht, den der
|
||||
Benutzer eingegeben hat. Für Active-Directory-Server ist dies
|
||||
meist ‘<literal>sAMAccountName</literal>’, für andere
|
||||
LDAP-Server hingegen ‘<literal>uid</literal>’. Diese Angabe ist
|
||||
zwingend erforderlich.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><literal>base_dn</literal></term>
|
||||
<listitem>
|
||||
<para>Der Abschnitt des LDAP-Baumes, der durchsucht werden soll.
|
||||
Diese Angabe ist zwingend erforderlich.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><literal>filter</literal></term>
|
||||
<listitem>
|
||||
<para>Ein optionaler LDAP-Filter. Enthält dieser Filter das Wort
|
||||
<literal><%login%></literal>, so wird dieses durch den vom
|
||||
Benutzer eingegebenen Benutzernamen ersetzt. Andernfalls wird
|
||||
der LDAP-Baum nach einem Element durchsucht, bei dem das oben
|
||||
angegebene Attribut mit dem Benutzernamen identisch ist.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><literal>bind_dn</literal> und
|
||||
<literal>bind_password</literal></term>
|
||||
<listitem>
|
||||
<para>Wenn der LDAP-Server eine Anmeldung erfordert, bevor er
|
||||
durchsucht werden kann (z.B. ist dies bei
|
||||
Active-Directory-Servern der Fall), so kann diese hier angegeben
|
||||
werden. Für Active-Directory-Server kann als
|
||||
‘<literal>bind_dn</literal>’ entweder eine komplette LDAP-DN wie
|
||||
z.B. ‘<literal>cn=Martin
|
||||
Mustermann,cn=Users,dc=firmendomain</literal>’ auch nur der
|
||||
volle Name des Benutzers eingegeben werden; in diesem Beispiel
|
||||
also ‘<literal>Martin Mustermann</literal>’.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
90baed86 | Moritz Bunkus | </variablelist>
|
||
7ee506b3 | Moritz Bunkus | </sect2>
|
||
<sect2 id="Name-des-Session-Cookies">
|
||||
<title>Name des Session-Cookies</title>
|
||||
5fa26f9a | Moritz Bunkus | <para>Sollen auf einem Server mehrere kivitendo-Installationen
|
||
3adb0cb7 | Moritz Bunkus | aufgesetzt werden, so müssen die Namen der Session-Cookies für alle
|
||
Installationen unterschiedlich sein. Der Name des Cookies wird mit dem
|
||||
Parameter <varname>cookie_name</varname> im Abschnitt
|
||||
90baed86 | Moritz Bunkus | <varname>[authentication]</varname>gesetzt.</para>
|
||
7ee506b3 | Moritz Bunkus | |||
<para>Diese Angabe ist optional, wenn nur eine Installation auf dem
|
||||
Server existiert.</para>
|
||||
</sect2>
|
||||
<sect2 id="Anlegen-der-Authentifizierungsdatenbank">
|
||||
<title>Anlegen der Authentifizierungsdatenbank</title>
|
||||
<para>Nachdem alle Einstellungen in
|
||||
5fa26f9a | Moritz Bunkus | <filename>config/kivitendo.conf</filename> vorgenommen wurden, muss
|
||
kivitendo die Authentifizierungsdatenbank anlegen. Dieses geschieht
|
||||
7ee506b3 | Moritz Bunkus | automatisch, wenn Sie sich im Administrationsmodul anmelden, das unter
|
||
der folgenden URL erreichbar sein sollte:</para>
|
||||
<para><ulink
|
||||
854c9a62 | Moritz Bunkus | url="http://localhost/kivitendo-erp/controller.pl?action=Admin/login">http://localhost/kivitendo-erp/controller.pl?action=Admin/login</ulink></para>
|
||
7ee506b3 | Moritz Bunkus | </sect2>
|
||
</sect1>
|
||||
<sect1 id="Benutzer--und-Gruppenverwaltung">
|
||||
854c9a62 | Moritz Bunkus | <title>Mandanten-, Benutzer- und Gruppenverwaltung</title>
|
||
7ee506b3 | Moritz Bunkus | |||
0e14ae06 | Andreas Zenklusen | <para>Nach der Installation müssen Mandanten, Benutzer, Gruppen und
|
||
Datenbanken angelegt werden. Dieses geschieht im Administrationsmenü,
|
||||
das Sie unter folgender URL finden:</para>
|
||||
7ee506b3 | Moritz Bunkus | |||
<para><ulink
|
||||
854c9a62 | Moritz Bunkus | url="http://localhost/kivitendo-erp/controller.pl?action=Admin/login">http://localhost/kivitendo-erp/controller.pl?action=Admin/login</ulink></para>
|
||
7ee506b3 | Moritz Bunkus | |||
2096308e | Geoffrey Richardson | <para>Verwenden Sie zur Anmeldung das Passwort, das Sie in der Datei
|
||
5fa26f9a | Moritz Bunkus | <filename>config/kivitendo.conf</filename> eingetragen haben.</para>
|
||
7ee506b3 | Moritz Bunkus | |||
<sect2 id="Zusammenhänge">
|
||||
<title>Zusammenhänge</title>
|
||||
0e14ae06 | Andreas Zenklusen | <para>kivitendo verwaltet zwei Sets von Daten, die je nach Einrichtung
|
||
in einer oder zwei Datenbanken gespeichert werden.</para>
|
||||
<para>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 <filename>config/kivitendo.conf</filename>
|
||||
gespeichert werden.</para>
|
||||
<para>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.</para>
|
||||
<para>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.</para>
|
||||
</sect2>
|
||||
854c9a62 | Moritz Bunkus | |||
<sect2 id="Mandanten-Benutzer-Gruppen">
|
||||
<title>Mandanten, Benutzer und Gruppen</title>
|
||||
0e14ae06 | Andreas Zenklusen | <para>kivitendos Administration kennt Mandanten, Benutzer und Gruppen,
|
||
die sich frei zueinander zuordnen lassen.</para>
|
||||
<para>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 <link
|
||||
linkend="Datenbanken-anlegen">Datenbankverwaltung</link>
|
||||
geschehen.</para>
|
||||
<para>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.</para>
|
||||
<para>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,</para>
|
||||
<para>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:</para>
|
||||
7ee506b3 | Moritz Bunkus | |||
<orderedlist numeration="arabic">
|
||||
<listitem>
|
||||
<para>Datenbank anlegen</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>Gruppen anlegen</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
854c9a62 | Moritz Bunkus | <para>Benutzer anlegen und Gruppen als Mitglied zuordnen</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
<listitem>
|
||||
854c9a62 | Moritz Bunkus | <para>Mandanten anlegen und Gruppen sowie Benutzer zuweisen</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</orderedlist>
|
||||
</sect2>
|
||||
<sect2 id="Datenbanken-anlegen">
|
||||
<title>Datenbanken anlegen</title>
|
||||
<para>Zuerst muss eine Datenbank angelegt werden. Verwenden Sie für
|
||||
den Datenbankzugriff den vorhin angelegten Benutzer (in unseren
|
||||
5fa26f9a | Moritz Bunkus | Beispielen ist dies ‘<literal>kivitendo</literal>’).</para>
|
||
7ee506b3 | Moritz Bunkus | </sect2>
|
||
<sect2 id="Gruppen-anlegen">
|
||||
<title>Gruppen anlegen</title>
|
||||
<para>Eine Gruppe wird in der Gruppenverwaltung angelegt. Ihr muss ein
|
||||
Name gegeben werden, eine Beschreibung ist hingegen optional. Nach dem
|
||||
Anlegen können Sie die verschiedenen Bereiche wählen, auf die
|
||||
Mitglieder dieser Gruppe Zugriff haben sollen.</para>
|
||||
0e14ae06 | Andreas Zenklusen | <para>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").</para>
|
||||
<para>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").</para>
|
||||
7ee506b3 | Moritz Bunkus | </sect2>
|
||
<sect2 id="Benutzer-anlegen">
|
||||
<title>Benutzer anlegen</title>
|
||||
0e14ae06 | Andreas Zenklusen | <para>Beim Anlegen von Benutzern werden für viele Parameter
|
||
Standardeinstellungen vorgenommen, die den Gepflogenheiten des
|
||||
deutschen Raumes entsprechen.</para>
|
||||
7ee506b3 | Moritz Bunkus | |||
0e14ae06 | Andreas Zenklusen | <para>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
|
||||
854c9a62 | Moritz Bunkus | deaktiviert.</para>
|
||
7ee506b3 | Moritz Bunkus | |||
0e14ae06 | Andreas Zenklusen | <para>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").</para>
|
||||
7ee506b3 | Moritz Bunkus | </sect2>
|
||
854c9a62 | Moritz Bunkus | <sect2 id="Mandanten-anlegen">
|
||
<title>Mandanten anlegen</title>
|
||||
7ee506b3 | Moritz Bunkus | |||
0e14ae06 | Andreas Zenklusen | <para>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.</para>
|
||||
<para>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").</para>
|
||||
7ee506b3 | Moritz Bunkus | </sect2>
|
||
</sect1>
|
||||
0e14ae06 | Andreas Zenklusen | |||
72de9676 | Jan Büren | <sect1 id="Drucker--Systemverwaltung">
|
||
<title>Drucker- und Systemverwaltung</title>
|
||||
0e14ae06 | Andreas Zenklusen | |||
<para>Im Administrationsmenü gibt es ferner noch die beiden Menüpunkte
|
||||
Druckeradministration und System.</para>
|
||||
72de9676 | Jan Büren | <sect2 id="Druckeradministration">
|
||
<title>Druckeradministration</title>
|
||||
0e14ae06 | Andreas Zenklusen | |||
<para>Unter dem Menüpunkt Druckeradministration lassen sich beliebig
|
||||
viele "Druckbefehle" im System verwalten. Diese Befehle werden
|
||||
mandantenweise zugeordnet. Unter Druckerbeschreibung wird der Namen
|
||||
des Druckbefehls festgelegt, der dann in der Druckerauswahl des Belegs
|
||||
angezeigt wird.</para>
|
||||
<para>Unter Druckbefehl definiert man den eigentlichen Druckbefehl,
|
||||
der direkt auf dem Webserver ausgeführt wird, bspw. 'lpr -P
|
||||
meinDrucker' oder ein kompletter Pfad zu einem Skript
|
||||
(/usr/local/src/kivitendo/scripts/pdf_druck_in_verzeichnis.sh). Wird
|
||||
ferner noch ein optionales Vorlagenkürzel verwendet, wird dieses
|
||||
Kürzel bei der Auswahl der Druckvorlagendatei mit einem Unterstrich
|
||||
ergänzt, ist bspw. das Kürzel 'epson_drucker' definiert, so wird beim
|
||||
Ausdruck eines Angebots folgende Vorlage geparst:
|
||||
sales_quotation_epson_drucker.tex.</para>
|
||||
</sect2>
|
||||
72de9676 | Jan Büren | <sect2 id="System">
|
||
<title>System sperren / entsperren</title>
|
||||
0e14ae06 | Andreas Zenklusen | <para>Unter dem Menüpunkt System gibt es den Eintrag 'Installation
|
||
sperren/entsperren'. Setzt man diese Sperre so ist der Zugang zu der
|
||||
gesamten kivitendo Installation gesperrt.</para>
|
||||
7ee506b3 | Moritz Bunkus | |||
0e14ae06 | Andreas Zenklusen | <para>Falls die Sperre gesetzt ist, erscheint anstelle der
|
||
Anmeldemaske die Information: 'kivitendo ist momentan zwecks
|
||||
Wartungsarbeiten nicht zugänglich.'.</para>
|
||||
a7121495 | Moritz Bunkus | |||
0e14ae06 | Andreas Zenklusen | <para>Wichtig zu erwähnen ist hierbei noch, dass sich kivitendo
|
||
automatisch 'sperrt', falls es bei einem Versionsupdate zu einem
|
||||
Datenbankfehler kam. Somit kann hier nicht aus Versehen mit einem
|
||||
inkonsistenten Datenbestand weitergearbeitet werden.</para>
|
||||
</sect2>
|
||||
</sect1>
|
||||
a7121495 | Moritz Bunkus | |||
0e14ae06 | Andreas Zenklusen | <sect1 id="config.sending-email"
|
||
xreflabel="E-Mail-Versand aus kivitendo heraus">
|
||||
<title>E-Mail-Versand aus kivitendo heraus</title>
|
||||
a7121495 | Moritz Bunkus | |||
0e14ae06 | Andreas Zenklusen | <para>kivitendo kann direkt aus dem Programm heraus E-Mails versenden,
|
||
z.B. um ein Angebot direkt an einen Kunden zu verschicken. Damit dies
|
||||
funktioniert, muss eingestellt werden, über welchen Server die E-Mails
|
||||
verschickt werden sollen. kivitendo unterstützt dabei zwei Mechanismen:
|
||||
Versand über einen lokalen E-Mail-Server (z.B. mit
|
||||
<productname>Postfix</productname> oder <productname>Exim</productname>,
|
||||
was auch die standardmäßig aktive Methode ist) sowie Versand über einen
|
||||
SMTP-Server (z.B. der des eigenen Internet-Providers).</para>
|
||||
<para>Welche Methode und welcher Server verwendet werden, wird über die
|
||||
Konfigurationsdatei <filename>config/kivitendo.conf</filename>
|
||||
festgelegt. Dort befinden sich alle Einstellungen zu diesem Thema im
|
||||
Abschnitt '<literal>[mail_delivery]</literal>'.</para>
|
||||
<sect2 id="config.sending-email.sendmail"
|
||||
xreflabel="E-Mail-Versand über lokalen E-Mail-Server">
|
||||
a7121495 | Moritz Bunkus | <title>Versand über lokalen E-Mail-Server</title>
|
||
0e14ae06 | Andreas Zenklusen | <para>Diese Methode bietet sich an, wenn auf dem Server, auf dem
|
||
kivitendo läuft, bereits ein funktionsfähiger E-Mail-Server wie z.B.
|
||||
<productname>Postfix</productname>, <productname>Exim</productname>
|
||||
oder <productname>Sendmail</productname> läuft.</para>
|
||||
a7121495 | Moritz Bunkus | |||
0e14ae06 | Andreas Zenklusen | <para>Um diese Methode auszuwählen, muss der Konfigurationsparameter
|
||
'<literal>method = sendmail</literal>' gesetzt sein. Dies ist
|
||||
a7121495 | Moritz Bunkus | gleichzeitig der Standardwert, falls er nicht verändert wird.</para>
|
||
0e14ae06 | Andreas Zenklusen | <para>Um zu kontrollieren, wie das Programm zum Einliefern gestartet
|
||
wird, dient der Parameter '<literal>sendmail = ...</literal>'. Der
|
||||
Standardwert verweist auf das Programm
|
||||
<filename>/usr/bin/sendmail</filename>, das bei allen oben genannten
|
||||
a7121495 | Moritz Bunkus | E-Mail-Serverprodukten für diesen Zweck funktionieren sollte.</para>
|
||
0e14ae06 | Andreas Zenklusen | <para>Die Konfiguration des E-Mail-Servers selber würde den Rahmen
|
||
dieses sprengen. Hierfür sei auf die Dokumentation des E-Mail-Servers
|
||||
verwiesen.</para>
|
||||
a7121495 | Moritz Bunkus | </sect2>
|
||
0e14ae06 | Andreas Zenklusen | <sect2 id="config.sending-email.smtp"
|
||
xreflabel="E-Mail-Versand über einen SMTP-Server">
|
||||
a7121495 | Moritz Bunkus | <title>Versand über einen SMTP-Server</title>
|
||
0e14ae06 | Andreas Zenklusen | <para>Diese Methode bietet sich an, wenn kein lokaler E-Mail-Server
|
||
vorhanden oder zwar einer vorhanden, dieser aber nicht konfiguriert
|
||||
ist.</para>
|
||||
a7121495 | Moritz Bunkus | |||
0e14ae06 | Andreas Zenklusen | <para>Um diese Methode auszuwählen, muss der Konfigurationsparameter
|
||
'<literal>method = smtp</literal>' gesetzt sein. Die folgenden
|
||||
a7121495 | Moritz Bunkus | Parameter dienen dabei der weiteren Konfiguration:</para>
|
||
<variablelist>
|
||||
<varlistentry>
|
||||
<term><varname>hostname</varname></term>
|
||||
0e14ae06 | Andreas Zenklusen | <listitem>
|
||
<para>Name oder IP-Adresse des SMTP-Servers. Standardwert:
|
||||
'<literal>localhost</literal>'</para>
|
||||
</listitem>
|
||||
a7121495 | Moritz Bunkus | </varlistentry>
|
||
<varlistentry>
|
||||
<term><varname>port</varname></term>
|
||||
0e14ae06 | Andreas Zenklusen | <listitem>
|
||
<para>Portnummer. Der Standardwert hängt von der verwendeten
|
||||
Verschlüsselungsmethode ab. Gilt '<literal>security =
|
||||
none</literal>' oder '<literal>security = tls</literal>', so ist
|
||||
25 die Standardportnummer. Für '<literal>security =
|
||||
ssl</literal>' ist 465 die Portnummer. Muss normalerweise nicht
|
||||
geändert werden.</para>
|
||||
</listitem>
|
||||
a7121495 | Moritz Bunkus | </varlistentry>
|
||
<varlistentry>
|
||||
<term><varname>security</varname></term>
|
||||
0e14ae06 | Andreas Zenklusen | <listitem>
|
||
<para>Wahl der zu verwendenden Verschlüsselung der Verbindung
|
||||
mit dem Server. Standardwert ist '<literal>none</literal>',
|
||||
wodurch keine Verschlüsselung verwendet wird. Mit
|
||||
'<literal>tls</literal>' wird TLS-Verschlüsselung eingeschaltet,
|
||||
und mit '<literal>ssl</literal>' wird Verschlüsselung via SSL
|
||||
eingeschaltet. Achtung: Für '<literal>tls</literal>' und
|
||||
'<literal>ssl</literal>' werden zusätzliche Perl-Module benötigt
|
||||
(siehe unten).</para>
|
||||
</listitem>
|
||||
a7121495 | Moritz Bunkus | </varlistentry>
|
||
<varlistentry>
|
||||
0e14ae06 | Andreas Zenklusen | <term><varname>login</varname> und
|
||
<varname>password</varname></term>
|
||||
a7121495 | Moritz Bunkus | |||
0e14ae06 | Andreas Zenklusen | <listitem>
|
||
<para>Falls der E-Mail-Server eine Authentifizierung verlangt,
|
||||
so können mit diesen zwei Parametern der Benutzername und das
|
||||
Passwort angegeben werden. Wird Authentifizierung verwendet, so
|
||||
sollte aus Sicherheitsgründen auch eine Form von Verschlüsselung
|
||||
aktiviert werden.</para>
|
||||
</listitem>
|
||||
a7121495 | Moritz Bunkus | </varlistentry>
|
||
</variablelist>
|
||||
</sect2>
|
||||
</sect1>
|
||||
5fa26f9a | Moritz Bunkus | <sect1 id="Drucken-mit-kivitendo">
|
||
<title>Drucken mit kivitendo</title>
|
||||
7ee506b3 | Moritz Bunkus | |||
0e14ae06 | Andreas Zenklusen | <para>Das Drucksystem von kivitendo benutzt von Haus aus LaTeX-Vorlagen.
|
||
Um drucken zu können, braucht der Server ein geeignetes LaTeX System. Am
|
||||
einfachsten ist dazu eine <literal>texlive</literal> Installation. Unter
|
||||
debianoiden Betriebssystemen installiert man die Pakete mit:</para>
|
||||
7ee506b3 | Moritz Bunkus | |||
524bf98c | Jan Büren | <para><programlisting>apt-get install texlive-base-bin texlive-latex-recommended texlive-fonts-recommended \
|
||
e1b34efd | Jan Büren | texlive-latex-extra texlive-lang-german texlive-generic-extra</programlisting></para>
|
||
7ee506b3 | Moritz Bunkus | |||
eed85694 | Moritz Bunkus | <para>Für Fedora benötigen Sie die folgenden Pakete:</para>
|
||
<para><programlisting>dnf install texlive-collection-latex texlive-collection-latexextra \
|
||||
texlive-collection-latexrecommended texlive-collection-langgerman \
|
||||
texlive-collection-langenglish</programlisting></para>
|
||||
<para>Für openSUSE benötigen Sie die folgenden Pakete:</para>
|
||||
<para><programlisting>zypper install texlive-collection-latex texlive-collection-latexextra \
|
||||
texlive-collection-latexrecommended texlive-collection-langgerman \
|
||||
texlive-collection-langenglish</programlisting></para>
|
||||
7ee506b3 | Moritz Bunkus | |||
d575e646 | Moritz Bunkus | <para>kivitendo bringt drei alternative Vorlagensätze mit:</para>
|
||
0e14ae06 | Andreas Zenklusen | |||
d575e646 | Moritz Bunkus | <itemizedlist>
|
||
0e14ae06 | Andreas Zenklusen | <listitem>
|
||
<para>RB</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>f-tex</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>rev-odt</para>
|
||||
</listitem>
|
||||
d575e646 | Moritz Bunkus | </itemizedlist>
|
||
d3a086e3 | Wulf Coulmann | |||
0e14ae06 | Andreas Zenklusen | <para>Der ehemalige Druckvorlagensatz "Standard" wurde mit der Version
|
||
3.3 entfernt, da er nicht mehr gepflegt wurde.</para>
|
||||
dd75cbf3 | Geoffrey Richardson | |||
0e14ae06 | Andreas Zenklusen | <sect2 id="Vorlagenverzeichnis-anlegen"
|
||
xreflabel="Vorlagenverzeichnis anlegen">
|
||||
d3a086e3 | Wulf Coulmann | <title>Vorlagenverzeichnis anlegen</title>
|
||
0e14ae06 | Andreas Zenklusen | |||
<para>Es lässt sich ein initialer Vorlagensatz erstellen. Die
|
||||
LaTeX-System-Abhängigkeiten hierfür kann man prüfen mit:</para>
|
||||
d575e646 | Moritz Bunkus | |||
cb3b06bc | Wulf Coulmann | <programlisting>./scripts/installation_check.pl -lv</programlisting>
|
||
0e14ae06 | Andreas Zenklusen | <para>Der Angemeldete Benutzer muss in einer Gruppe sein, die über das
|
||
Recht "Konfiguration -> Mandantenverwaltung" verfügt. Siehe auch
|
||||
<xref linkend="Gruppen-anlegen"/>.</para>
|
||||
d575e646 | Moritz Bunkus | |||
0e14ae06 | Andreas Zenklusen | <para>Im Userbereich lässt sich unter: "<guimenu>System</guimenu>
|
||
-> <guisubmenu>Mandantenverwaltung</guisubmenu> ->
|
||||
<guimenuitem>Verschiedenes</guimenuitem>" die Option "Neue
|
||||
Druckvorlagen aus Vorlagensatz erstellen" auswählen.</para>
|
||||
d3a086e3 | Wulf Coulmann | |||
0e14ae06 | Andreas Zenklusen | <orderedlist>
|
||
<listitem>
|
||||
<para><option>Vorlagen auswählen</option>: Wählen Sie hier den
|
||||
Vorlagensatz aus, der kopiert werden soll
|
||||
(<filename>RB</filename>, <filename>f-tex</filename> oder
|
||||
<filename>odt-rev</filename>.)</para>
|
||||
</listitem>
|
||||
d575e646 | Moritz Bunkus | |||
0e14ae06 | Andreas Zenklusen | <listitem>
|
||
<para><option>Neuer Name</option>: Der Verzeichnisname für den
|
||||
neuen Vorlagensatz. Dieser kann im Rahmen der üblichen Bedingungen
|
||||
für Verzeichnisnamen frei gewählt werden.</para>
|
||||
</listitem>
|
||||
</orderedlist>
|
||||
d3a086e3 | Wulf Coulmann | |||
0e14ae06 | Andreas Zenklusen | <para>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 müssen Anpassungen (Logo, Erscheinungsbild, etc) noch
|
||||
vorgenommen werden. Den Ordner findet man im Dateisystem unter
|
||||
<filename>./templates/[Neuer Name]</filename></para>
|
||||
d3a086e3 | Wulf Coulmann | </sect2>
|
||
dd75cbf3 | Geoffrey Richardson | <sect2 id="Vorlagen-RB">
|
||
<title>Der Druckvorlagensatz RB</title>
|
||||
0e14ae06 | Andreas Zenklusen | <para>Hierbei handelt es sich um einen vollständigen LaTeX
|
||
Dokumentensatz mit alternativem Design. Die odt oder html-Varianten
|
||||
sind nicht gepflegt.</para>
|
||||
dd75cbf3 | Geoffrey Richardson | <para>Die konzeptionelle Idee der Vorlagen wird <ulink
|
||
0e14ae06 | Andreas Zenklusen | url="http://www.kivitendo-support.de/vortraege/Lx-Office%20Anwendertreffen%20LaTeX-Druckvorlagen-Teil3-finale.pdf">hier</ulink>
|
||
auf Folie 5 bis 10 vorgestellt. Informationen zur Anpassung an die
|
||||
eigenen Firmendaten finden sich in der Datei Readme.tex im
|
||||
Vorlagenverzeichnis.</para>
|
||||
dd75cbf3 | Geoffrey Richardson | |||
<para>Eine kurze Übersicht der Features:</para>
|
||||
d3a086e3 | Wulf Coulmann | |||
0e14ae06 | Andreas Zenklusen | <itemizedlist>
|
||
<listitem>
|
||||
<para>Mehrsprachenfähig, mit Deutscher und Englischer
|
||||
Übersetzung</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>Zentrale Konfigurationsdateien, die für alle Belege benutzt
|
||||
werden, z.B. für Kopf- und Fußzeilen, und Infos wie
|
||||
Bankdaten</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>mehrere vordefinierte Varianten für
|
||||
Logos/Hintergrundbilder</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>Berücksichtigung für Steuerzonen "EU mit USt-ID Nummer" oder
|
||||
"Außerhalb EU"</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
d3a086e3 | Wulf Coulmann | </sect2>
|
||
<sect2 id="f-tex">
|
||||
<title>f-tex</title>
|
||||
0e14ae06 | Andreas Zenklusen | <para>Ein Vorlagensatz, der in wenigen Minuten alle Dokumente zur
|
||
Verfügung stellt.</para>
|
||||
d3a086e3 | Wulf Coulmann | |||
<sect3 id="f-tex-Feature-Übersicht">
|
||||
d575e646 | Moritz Bunkus | <title>Feature-Übersicht</title>
|
||
0e14ae06 | Andreas Zenklusen | |||
d3a086e3 | Wulf Coulmann | <itemizedlist>
|
||
0e14ae06 | Andreas Zenklusen | <listitem>
|
||
<para>Keine Redundanz. Es wird ein- und dieselbe LaTeX-Vorlage
|
||||
für alle briefartigen Dokumente verwendet. Also Angebot,
|
||||
Rechnung, Proformarechnung, Lieferschein, aber eben nicht für
|
||||
Paketaufkleber etc.</para>
|
||||
</listitem>
|
||||
d575e646 | Moritz Bunkus | |||
0e14ae06 | Andreas Zenklusen | <listitem>
|
||
<para>Leichte Anpassung an das Firmen-Layout durch Verwendung
|
||||
eines Hintergrund-PDFs. Dieses kann leicht mit dem eigenen
|
||||
Lieblingsprogramm erstellt werden (Openoffice, Inkscape, Gimp,
|
||||
Adobe*)</para>
|
||||
</listitem>
|
||||
d575e646 | Moritz Bunkus | |||
0e14ae06 | Andreas Zenklusen | <listitem>
|
||
<para>Hintergrund-PDF umschaltbar auf "nur erste Seite"
|
||||
(Standard) oder "alle Seiten" (Option
|
||||
"<option>bgPdfFirstPageOnly</option>" in Datei
|
||||
<filename>letter.lco</filename>)</para>
|
||||
</listitem>
|
||||
d575e646 | Moritz Bunkus | |||
0e14ae06 | Andreas Zenklusen | <listitem>
|
||
<para>Hintergrund-PDF für Ausdruck auf bereits bedrucktem
|
||||
Briefpapier abschaltbar. Es wird dann nur bei per E-Mail
|
||||
versendeten Dokumenten eingebunden (Option
|
||||
"<option>bgPdfEmailOnly</option>" in Datei
|
||||
<filename>letter.lco</filename>).</para>
|
||||
</listitem>
|
||||
d575e646 | Moritz Bunkus | |||
0e14ae06 | Andreas Zenklusen | <listitem>
|
||
<para>Nutzung der Layout-Funktionen von LaTeX für Seitenumbruch,
|
||||
Wiederholung von Kopfzeilen, Zwischensummen etc. (danke an
|
||||
Kai-Martin Knaak für die Vorarbeit)</para>
|
||||
</listitem>
|
||||
d575e646 | Moritz Bunkus | |||
0e14ae06 | Andreas Zenklusen | <listitem>
|
||
<para>Anzeige des Empfängerlandes im Adressfeld nur, wenn es vom
|
||||
Land des eigenen Unternehmens abweicht (also die Rechnung das
|
||||
Land verlässt).</para>
|
||||
</listitem>
|
||||
d575e646 | Moritz Bunkus | |||
0e14ae06 | Andreas Zenklusen | <listitem>
|
||
<para>Multisprachfähig leicht um weitere Sprachen zu erweitern,
|
||||
alle Übersetzungen in der Datei
|
||||
<filename>translatinos.tex</filename>.</para>
|
||||
</listitem>
|
||||
d575e646 | Moritz Bunkus | |||
0e14ae06 | Andreas Zenklusen | <listitem>
|
||
<para>Auflistung von Bruttopreisen für Endverbraucher.</para>
|
||||
</listitem>
|
||||
d3a086e3 | Wulf Coulmann | </itemizedlist>
|
||
</sect3>
|
||||
d575e646 | Moritz Bunkus | <sect3 id="f-tex-Installation">
|
||
<title>Die Installation</title>
|
||||
0e14ae06 | Andreas Zenklusen | |||
d3a086e3 | Wulf Coulmann | <itemizedlist>
|
||
0e14ae06 | Andreas Zenklusen | <listitem>
|
||
<para>Vorlagenverzeichnis mit Option f-tex anlegen, siehe: <xref
|
||||
linkend="Vorlagenverzeichnis-anlegen"/>. Das Vorlagensystem
|
||||
funktioniert jetzt schon, hat allerdings noch einen
|
||||
Beispiel-Briefkopf.</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>Erstelle eine pdf-Hintergrund Datei und verlinke sie nach
|
||||
<filename>./letter_head.pdf</filename>.</para>
|
||||
</listitem>
|
||||
d575e646 | Moritz Bunkus | |||
0e14ae06 | Andreas Zenklusen | <listitem>
|
||
<para>Editiere den Bereich "<option>settings</option>" in der
|
||||
datei <filename>letter.lco</filename>.</para>
|
||||
</listitem>
|
||||
d3a086e3 | Wulf Coulmann | </itemizedlist>
|
||
45ff2497 | Bernd Bleßmann | <para>oder etwas detaillierter:</para>
|
||
d3a086e3 | Wulf Coulmann | |||
0e14ae06 | Andreas Zenklusen | <para>Es wird eine Datei <filename>sample.lco</filename> erstellt
|
||
und diese nach <filename>letter.lco</filename> verlinkt. Eigentlich
|
||||
ist dies die Datei die für die firmenspezifischen Anpassungen
|
||||
gedacht ist. Da die Einstiegshürde in LaTeX nicht ganz niedrig ist,
|
||||
wird in dieser Datei auf ein Hintergrund-PDF verwiesen. Ich empfehle
|
||||
über dieses PDF die persönlichen Layoutanpassungen vorzunehmen und
|
||||
<filename>sample.lco</filename> unverändert zu lassen. Die Anpassung
|
||||
über eine <filename>*.lco</filename>-Datei, die letztlich auf
|
||||
<filename>letter.lco</filename> verlinkt ist ist aber auch
|
||||
möglich.</para>
|
||||
<para>Es wird eine Datei <filename>sample_head.pdf</filename> mit
|
||||
ausgeliefert, diese wird nach <filename>letter_head.pdf</filename>
|
||||
verlinkt. Damit gibt es schon mal eine funktionsfähige Vorlage.
|
||||
Schau Dir nach Abschluss der Installation die Datei
|
||||
<filename>sample_head.pdf</filename> an und erstelle ein
|
||||
entsprechendes PDF passend zum Briefkopf Deiner Firma, diese dann im
|
||||
Template Verzeichniss ablegen und statt
|
||||
<filename>sample_head.pdf</filename> nach
|
||||
<filename>letter_head.pdf</filename> verlinken.</para>
|
||||
<para>Letzlich muss <filename>letter_head.pdf</filename> auf das
|
||||
passende Hintergrund-PDF verweisen, welches gewünschten Briefkopf
|
||||
enthält.</para>
|
||||
<para>Es wird eine Datei <filename>mydata.tex.example</filename>
|
||||
ausgeliefert, die nach <filename>mytdata.tex</filename> verlinkt
|
||||
ist. Bei verwendetem Hintergrund-PDF wird nur der Eintrag für das
|
||||
Land verwendet. Die Datei muss also nicht angefasst werden. Die
|
||||
anderen Werte sind für das Modul 'lp' (Label Print in erp - zur Zeit
|
||||
nicht im öffentlichen Zweig).</para>
|
||||
<para>Alle Anpassungen zum Briefkopf, Fusszeilen, Firmenlogos, etc.
|
||||
sollten über die Hintergrund-PDF-Datei oder die
|
||||
<filename>*.lco</filename>-Datei erfolgen.</para>
|
||||
d3a086e3 | Wulf Coulmann | </sect3>
|
||
d575e646 | Moritz Bunkus | |||
d3a086e3 | Wulf Coulmann | <sect3 id="f-tex-Funktionsübersicht">
|
||
<title>f-tex Funktionsübersicht</title>
|
||||
0e14ae06 | Andreas Zenklusen | |||
<para>Das Konzept von kivitendo sieht vor, für jedes Dokument
|
||||
(Auftragsbestätigung, Lieferschein, Rechnung, etc.) eine
|
||||
LaTeX-Vorlage vorzuhalten, dies ist sehr wartungsunfreundlich. Auch
|
||||
das Einlesen einer einheitlichen Quelle für den Briefkopf bringt nur
|
||||
bedingte Vorteile, da hier leicht die Pflege der Artikel-Tabellen
|
||||
aus dem Ruder läuft. Bei dem vorliegenden Ansatz wird für alle
|
||||
briefartigen Dokumente mit Artikel-Tabellen eine einheitliche
|
||||
LaTeX-Vorlage verwendet, welche über Codeweichen die Besonderheiten
|
||||
der jeweiligen Dokumente berücksichtigt:</para>
|
||||
d575e646 | Moritz Bunkus | |||
d3a086e3 | Wulf Coulmann | <itemizedlist>
|
||
0e14ae06 | Andreas Zenklusen | <listitem>
|
||
<para>Tabellen mit oder ohne Preis</para>
|
||||
</listitem>
|
||||
d3a086e3 | Wulf Coulmann | |||
0e14ae06 | Andreas Zenklusen | <listitem>
|
||
<para>Sprache der Tabellenüberschriften etc.</para>
|
||||
</listitem>
|
||||
d575e646 | Moritz Bunkus | |||
0e14ae06 | Andreas Zenklusen | <listitem>
|
||
<para>Anpassung der Bezugs-Zeile (z.B. Rechnungsnummer versus
|
||||
Angebotsnummer)</para>
|
||||
</listitem>
|
||||
d575e646 | Moritz Bunkus | |||
0e14ae06 | Andreas Zenklusen | <listitem>
|
||
<para>Darstellung von Brutto oder Netto-Preisen in der
|
||||
Auflistung (Endverbraucher versus gewerblicher Kunde)</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
<para>Nachteil:</para>
|
||||
<para>LaTeX hat ohnehin eine sehr steile Lehrnkurve. Die Datei
|
||||
<filename>letter.tex</filename> ist sehr komplex und verstärkt damit
|
||||
diesen Effekt noch einmal erheblich. Wer LaTeX-Erfahrung hat, oder
|
||||
geübt ist Scriptsparachen nachzuvollziehen kann natürlich auch
|
||||
innerhalb der Tabellendarstellung gut persönliche Anpassungen
|
||||
vornehmen. Aber man kann sich hier bei Veränderungen sehr schnell
|
||||
heftig in den Fuss schiessen.</para>
|
||||
d3a086e3 | Wulf Coulmann | |||
0e14ae06 | Andreas Zenklusen | <para>Wer nicht so tief in die Materie einsteigen will oder leicht
|
||
zu frustrieren ist, sollte sein Hintergrund-PDF auf Basis der
|
||||
mitglieferten Datei <filename>sample_head.pdf</filename> erstellen,
|
||||
und sich an der Form der dargestellten Tabellen, wie sie
|
||||
ausgeliefert werden, erfreuen.</para>
|
||||
d3a086e3 | Wulf Coulmann | |||
0e14ae06 | Andreas Zenklusen | <para>Kleiner Tipp: Nicht zu viel auf einmal wollen, lieber kleine,
|
||
kontinuierliche Schritte gehen.</para>
|
||||
d575e646 | Moritz Bunkus | </sect3>
|
||
<sect3 id="f-tex-Bruttopreise">
|
||||
<title>Bruttopreise für Endverbraucher</title>
|
||||
0e14ae06 | Andreas Zenklusen | <para>Der auszuweisende Bruttopreis wird innerhalb der
|
||
LaTeX-Umgebung berechnet. Es gibt zwar ein Feld, um bei Aufträgen
|
||||
"alle Preise Brutto" auszuwählen, aber:</para>
|
||||
d3a086e3 | Wulf Coulmann | <itemizedlist>
|
||
<listitem>
|
||||
0e14ae06 | Andreas Zenklusen | <para>hierfür müssen die Preise auch in Brutto in der Datenbank
|
||
stehen (ja - das lässt sich über die Preisgruppen und die
|
||||
d575e646 | Moritz Bunkus | Zuordung einer Default-Preisgruppe handhaben)</para>
|
||
d3a086e3 | Wulf Coulmann | </listitem>
|
||
0e14ae06 | Andreas Zenklusen | |||
d3a086e3 | Wulf Coulmann | <listitem>
|
||
0e14ae06 | Andreas Zenklusen | <para>man darf beim Anlegen des Vorgangs nicht vergessen, dieses
|
||
Häkchen zu setzen. (Das ist in der Praxis, wenn man sowohl
|
||||
Endverbraucher als auch Gewerbekunden beliefert, der eigentliche
|
||||
Knackpunkt)</para>
|
||||
d3a086e3 | Wulf Coulmann | </listitem>
|
||
</itemizedlist>
|
||||
0e14ae06 | Andreas Zenklusen | <para>Es gibt mit f-tex eine weitere Alternative. Die Information ob
|
||
Brutto oder Nettorechnung wird mit den Zahlarten verknüpft.
|
||||
Zahlarten bei denen Rechnungen, Angebote, etc, in Brutto ausgegeben
|
||||
werden sollen, enden mit "_E" (für Endverbraucher). Falls identische
|
||||
Zahlarten für Gewerbekunden und Endverbraucher vorhanden sind, legt
|
||||
man diese einfach doppelt an (einmal mit der Namensendung "_E").
|
||||
Gewinn:</para>
|
||||
d3a086e3 | Wulf Coulmann | |||
<itemizedlist>
|
||||
0e14ae06 | Andreas Zenklusen | <listitem>
|
||
<para>Die Entscheidung, ob Nettopreise ausgewiesen werden, ist
|
||||
nicht mehr fix mit einer Preisliste verbunden.</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>Die Default-Zahlart kann im Kundendatensatz hinterlegt
|
||||
werden, und man muss nicht mehr daran denken, "alle Preise
|
||||
Netto" auszuwählen.</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>Die Entscheidung, ob Netto- oder Bruttopreise ausgewiesen
|
||||
werden, kann direkt beim Drucken revidiert werden, ohne dass
|
||||
sich der Auftragswert ändert.</para>
|
||||
</listitem>
|
||||
d3a086e3 | Wulf Coulmann | </itemizedlist>
|
||
</sect3>
|
||||
d575e646 | Moritz Bunkus | <sect3 id="f-tex-lieferadressen">
|
||
<title>Lieferadressen</title>
|
||||
0e14ae06 | Andreas Zenklusen | <para>In Lieferscheinen kommen <varname>shipto*</varname>-Variablen
|
||
im Adressfeld zum Einsatz. Wenn die
|
||||
<varname>shipto*</varname>-Variable leer ist, wird die entsprechende
|
||||
Adressvariable eingesetzt. Wenn also die Lieferadresse in Straße,
|
||||
Hausnummer und Ort abweicht, müssen auch nur diese Felder in der
|
||||
Lieferadresse ausgefüllt werden. Für den Firmenname wird der Wert
|
||||
der Hauptadresse angezeigt.</para>
|
||||
d575e646 | Moritz Bunkus | </sect3>
|
||
d3a086e3 | Wulf Coulmann | </sect2>
|
||
eead7ecd | Jan Büren | |||
dd75cbf3 | Geoffrey Richardson | <sect2 id="Vorlagen-rev-odt">
|
||
<title>Der Druckvorlagensatz rev-odt</title>
|
||||
d3a086e3 | Wulf Coulmann | |||
0e14ae06 | Andreas Zenklusen | <para>Hierbei handelt es sich um einen Dokumentensatz der mit
|
||
odt-Vorlagen erstellt wurde. Es gibt in dem Verzeichnis eine
|
||||
Readme-Datei, die eventuell aktueller als die Dokumentation hier ist.
|
||||
Die odt-Vorlagen in diesem Verzeichnis "rev-odt" wurden von revamp-it,
|
||||
Zürich erstellt und werden laufend aktualisiert. Ein paar der
|
||||
Formulierungen in den Druckvorlagen entsprechen dem Schweizer
|
||||
Sprachgebrauch, z.B. "Offerte" oder "allfällig".</para>
|
||||
<para>Hinweis zum Einsatz des Feldes "Land" bei den Stammdaten für
|
||||
KundInnen und LieferantInnen, sowie bei Lieferadressen: Die in diesem
|
||||
Vorlagensatz vorhandenen Vorlagen erwarten für "Land" das
|
||||
entsprechende Kürzel, das in Adressen vor die Postleitzahl gesetzt
|
||||
wird. Das Feld kann auch komplett leer bleiben. Wer dies anders
|
||||
handhaben möchte, muss die Vorlagen entsprechend anpassen.</para>
|
||||
<para>odt-Vorlagen können mit LibreOffice oder OpenOffice editiert und
|
||||
den eigenen Bedürfnissen angepasst werden. Wichtig beim Editieren von
|
||||
if-Blöcken ist, dass immer der gesamte Block überschrieben werden muss
|
||||
und nicht nur Teile davon, da dies sonst oft zu einer odt-Datei führt,
|
||||
die vom Parser nicht korrekt gelesen werden kann.</para>
|
||||
<para>Zur Zeit gibt es in kivitendo noch keine Möglichkeit,
|
||||
5ad10035 | Moritz Bunkus | odt-Vorlagen bei Mahnungen, Briefen und Pflichtenheften einzusetzen.
|
||
2e917eea | Andreas Rudin | Entsprechende Vorlagen sind deshalb nicht vorhanden.</para>
|
||
0e14ae06 | Andreas Zenklusen | |||
<para>Fehlermeldungen, Anregungen und Wünsche bitte senden an:
|
||||
empfang@revamp-it.ch</para>
|
||||
d3a086e3 | Wulf Coulmann | </sect2>
|
||
d575e646 | Moritz Bunkus | <sect2 id="allgemeine-hinweise-zu-latex">
|
||
d3a086e3 | Wulf Coulmann | <title>Allgemeine Hinweise zu LaTeX Vorlagen</title>
|
||
0e14ae06 | Andreas Zenklusen | |||
<para>In den allermeisten Installationen sollte das Drucken jetzt
|
||||
schon funktionieren. Sollte ein Fehler auftreten, wirft TeX sehr lange
|
||||
Fehlerbeschreibungen, der eigentliche Fehler ist immer die erste
|
||||
Zeile, die mit einem Ausrufezeichen anfängt. Häufig auftretende Fehler
|
||||
sind zum Beispiel:</para>
|
||||
d3a086e3 | Wulf Coulmann | |||
<itemizedlist>
|
||||
<listitem>
|
||||
0e14ae06 | Andreas Zenklusen | <para>! LaTeX Error: File `eurosym.sty' not found. Die
|
||
entsprechende LaTeX-Bibliothek wurde nicht gefunden. Das tritt vor
|
||||
allem bei Vorlagen aus der Community auf. Installieren Sie die
|
||||
entsprechenden Pakete.</para>
|
||||
d3a086e3 | Wulf Coulmann | </listitem>
|
||
0e14ae06 | Andreas Zenklusen | |||
d3a086e3 | Wulf Coulmann | <listitem>
|
||
d575e646 | Moritz Bunkus | <para>! Package inputenc Error: Unicode char \u8:... set up for
|
||
d3a086e3 | Wulf Coulmann | use with LaTeX. Dieser Fehler tritt auf, wenn sie versuchen mit
|
||
einer Standardinstallation exotische utf8 Zeichen zu drucken.
|
||||
TeXLive unterstützt von Haus nur romanische Schriften und muss mit
|
||||
0e14ae06 | Andreas Zenklusen | diversen Tricks dazu gebracht werden andere Zeichen zu
|
||
akzeptieren. Adere TeX Systeme wie XeTeX schaffen hier
|
||||
Abhilfe.</para>
|
||||
d3a086e3 | Wulf Coulmann | </listitem>
|
||
</itemizedlist>
|
||||
0e14ae06 | Andreas Zenklusen | <para>Wird gar kein Fehler angezeigt, sondern nur der Name des
|
||
Templates, heißt das normalerweise, dass das LaTeX Binary nicht
|
||||
gefunden wurde. Prüfen Sie den Namen in der Konfiguration (Standard:
|
||||
d3a086e3 | Wulf Coulmann | <literal>pdflatex</literal>), und stellen Sie sicher, dass pdflatex
|
||
(oder das von Ihnen verwendete System) vom Webserver ausgeführt werden
|
||||
darf.</para>
|
||||
0e14ae06 | Andreas Zenklusen | <para>Wenn sich das Problem nicht auf Grund der Ausgabe im Webbrowser
|
||
verifizieren lässt:</para>
|
||||
d3a086e3 | Wulf Coulmann | <itemizedlist>
|
||
<listitem>
|
||||
0e14ae06 | Andreas Zenklusen | <para>editiere [kivitendo-home]/config/kivitendo.conf und ändere
|
||
"keep_temp_files" auf 1</para>
|
||||
<para><programlisting>keep_temp_files = 1;</programlisting></para>
|
||||
d3a086e3 | Wulf Coulmann | </listitem>
|
||
0e14ae06 | Andreas Zenklusen | |||
d3a086e3 | Wulf Coulmann | <listitem>
|
||
0e14ae06 | Andreas Zenklusen | <para>bei fastcgi oder mod_perl den Webserver neu Starten</para>
|
||
d3a086e3 | Wulf Coulmann | </listitem>
|
||
0e14ae06 | Andreas Zenklusen | |||
d3a086e3 | Wulf Coulmann | <listitem>
|
||
<para>Nochmal einen Druckversuch im Webfrontend auslösen</para>
|
||||
</listitem>
|
||||
0e14ae06 | Andreas Zenklusen | |||
d3a086e3 | Wulf Coulmann | <listitem>
|
||
2096308e | Geoffrey Richardson | <para>wechsel in das users Verzeichnis von kivitendo</para>
|
||
0e14ae06 | Andreas Zenklusen | |||
d3a086e3 | Wulf Coulmann | <para><programlisting>cd [kivitendo-home]/users</programlisting></para>
|
||
</listitem>
|
||||
0e14ae06 | Andreas Zenklusen | |||
d3a086e3 | Wulf Coulmann | <listitem>
|
||
<para>LaTeX Suchpfad anpassen:</para>
|
||||
0e14ae06 | Andreas Zenklusen | |||
d3a086e3 | Wulf Coulmann | <para><programlisting>export TEXINPUTS=".:[kivitendo-home]/templates/[aktuelles_template_verzeichniss]:"</programlisting></para>
|
||
</listitem>
|
||||
0e14ae06 | Andreas Zenklusen | |||
d3a086e3 | Wulf Coulmann | <listitem>
|
||
0e14ae06 | Andreas Zenklusen | <para>Finde heraus, welche Datei kivitendo beim letzten Durchlauf
|
||
erstellt hat</para>
|
||||
d3a086e3 | Wulf Coulmann | <para><programlisting>ls -lahtr ./1*.tex</programlisting></para>
|
||
0e14ae06 | Andreas Zenklusen | |||
d3a086e3 | Wulf Coulmann | <para>Es sollte die letzte Datei ganz unten sein</para>
|
||
</listitem>
|
||||
0e14ae06 | Andreas Zenklusen | |||
d3a086e3 | Wulf Coulmann | <listitem>
|
||
0e14ae06 | Andreas Zenklusen | <para>für besseren Hinweis auf Fehler texdatei nochmals
|
||
übersetzen</para>
|
||||
d3a086e3 | Wulf Coulmann | <para><programlisting>pdflatex ./1*.tex</programlisting></para>
|
||
0e14ae06 | Andreas Zenklusen | |||
d3a086e3 | Wulf Coulmann | <para>in der *.tex datei nach dem Fehler suchen.</para>
|
||
</listitem>
|
||||
</itemizedlist>
|
||||
</sect2>
|
||||
7ee506b3 | Moritz Bunkus | </sect1>
|
||
<sect1 id="OpenDocument-Vorlagen">
|
||||
<title>OpenDocument-Vorlagen</title>
|
||||
5fa26f9a | Moritz Bunkus | <para>kivitendo unterstützt die Verwendung von Vorlagen im
|
||
2e917eea | Andreas Rudin | OpenDocument-Format, wie es LibreOffice oder OpenOffice (ab Version 2) erzeugen.
|
||
5fa26f9a | Moritz Bunkus | kivitendo kann dabei sowohl neue OpenDocument-Dokumente als auch aus
|
||
7ee506b3 | Moritz Bunkus | diesen direkt PDF-Dateien erzeugen. Um die Unterstützung von
|
||
OpenDocument-Vorlagen zu aktivieren muss in der Datei
|
||||
5fa26f9a | Moritz Bunkus | <filename>config/kivitendo.conf</filename> die Variable
|
||
7ee506b3 | Moritz Bunkus | <literal>opendocument</literal> im Abschnitt
|
||
<literal>print_templates</literal> auf ‘<literal>1</literal>’ stehen.
|
||||
Dieses ist die Standardeinstellung.</para>
|
||||
<para>Während die Erzeugung von reinen OpenDocument-Dateien keinerlei
|
||||
weitere Software benötigt, wird zur Umwandlung dieser Dateien in PDF
|
||||
2e917eea | Andreas Rudin | LibreOffice oder OpenOffice benötigt. Soll dieses Feature genutzt werden, so muss
|
||
neben LibreOffice oder OpenOffice auch der “X virtual frame buffer”
|
||||
7ee506b3 | Moritz Bunkus | (xvfb) installiert werden. Bei Debian ist er im Paket “xvfb” enthalten.
|
||
Andere Distributionen enthalten ihn in anderen Paketen.</para>
|
||||
<para>Nach der Installation müssen in der Datei
|
||||
2e917eea | Andreas Rudin | <filename>config/kivitendo.conf</filename> im Abschnitt
|
||
<literal>applications</literal> zwei weitere Variablen
|
||||
angepasst werden:</para>
|
||||
<para><literal>openofficeorg_writer</literal> muss den
|
||||
vollständigen Pfad zu LibreOffice oder OpenOffice enthalten.
|
||||
Dabei dürfen keine Anführungszeichen eingesetzt werden.</para>
|
||||
<para>Beispiel für Debian oder Ubuntu:</para>
|
||||
<programlisting>openofficeorg_writer = /usr/bin/libreoffice</programlisting>
|
||||
<para><literal>xvfb</literal> muss den Pfad zum “X virtual frame buffer”
|
||||
enthalten.</para>
|
||||
7ee506b3 | Moritz Bunkus | |||
5fa26f9a | Moritz Bunkus | <para>Zusätzlich gibt es zwei verschiedene Arten, wie kivitendo mit
|
||
5ad10035 | Moritz Bunkus | LibreOffice bzw. OpenOffice kommuniziert. Die erste Variante, die benutzt
|
||
wird, wenn die Variable <literal>$openofficeorg_daemon</literal> gesetzt
|
||||
ist, startet ein LibreOffice oder OpenOffice, das auch nach der Umwandlung
|
||||
des Dokumentes gestartet bleibt. Bei weiteren Umwandlungen wird dann diese
|
||||
laufende Instanz benutzt. Der Vorteil ist, dass die Zeit zur Umwandlung
|
||||
deutlich reduziert wird, weil nicht für jedes Dokument ein LibreOffice bzw.
|
||||
OpenOffice gestartet werden muss. Der Nachteil ist, dass diese Methode
|
||||
Python und die Python-UNO-Bindings benötigt, die Bestandteil von LibreOffice
|
||||
2e917eea | Andreas Rudin | bzw. OpenOffice sind.</para>
|
||
7ee506b3 | Moritz Bunkus | |||
1725e45a | Moritz Bunkus | <note>
|
||
5ad10035 | Moritz Bunkus | <para>Für die Verbindung zu LibreOffice bzw. OpenOffice wird
|
||
2e917eea | Andreas Rudin | normalerweise der Python-Interpreter
|
||
<filename>/usr/bin/python</filename> benutzt.
|
||||
0e14ae06 | Andreas Zenklusen | Sollte dies nicht der richtige sein, so kann man mit zwei
|
||
Konfigurationsvariablen entscheiden, welcher Python-Interpreter
|
||||
genutzt wird. Mit der Option <literal>python_uno</literal> aus dem
|
||||
Abschnitt <literal>applications</literal> wird der Interpreter selber
|
||||
festgelegt; sie steht standardmäßig auf dem eben erwähnten Wert
|
||||
<literal>/usr/bin/python</literal>.</para>
|
||||
<para>Zusätzlich ist es möglich, Pfade anzugeben, in denen Python
|
||||
neben seinen normalen Suchpfaden ebenfalls nach Modulen gesucht wird,
|
||||
5ad10035 | Moritz Bunkus | z.B. falls sich diese in einem gesonderten LibreOffice- bzw.
|
||
2e917eea | Andreas Rudin | OpenOffice-Verzeichnis befinden. Diese zweite Variable heißt
|
||
0e14ae06 | Andreas Zenklusen | <literal>python_uno_path</literal> und befindet sich im Abschnitt
|
||
<literal>environment</literal>. 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 <literal>PYTHONPATH</literal>
|
||||
übergeben.</para>
|
||||
1725e45a | Moritz Bunkus | </note>
|
||
7ee506b3 | Moritz Bunkus | <para>Ist <literal>$openofficeorg_daemon</literal> nicht gesetzt, so
|
||
5ad10035 | Moritz Bunkus | wird für jedes Dokument LibreOffice bzw. OpenOffice neu gestartet
|
||
und die Konvertierung mit Hilfe eines Makros durchgeführt. Dieses
|
||||
2e917eea | Andreas Rudin | Makro muss in der Dokumentenvorlage enthalten sein und
|
||
7ee506b3 | Moritz Bunkus | “Standard.Conversion.ConvertSelfToPDF()” heißen. Die Beispielvorlage
|
||
2e917eea | Andreas Rudin | ‘<literal>templates/print/rev-odt/invoice.odt</literal>’
|
||
7ee506b3 | Moritz Bunkus | enthält ein solches Makro, das in jeder anderen Dokumentenvorlage
|
||
ebenfalls enthalten sein muss.</para>
|
||||
<para>Als letztes muss herausgefunden werden, welchen Namen
|
||||
2e917eea | Andreas Rudin | OpenOffice bzw. LibreOffice dem Verzeichnis mit den Benutzereinstellungen
|
||
5ad10035 | Moritz Bunkus | gibt. Unter Debian ist dies momentan
|
||
<literal>~/.config/libreoffice</literal>. kivitendo verwendet das
|
||||
2e917eea | Andreas Rudin | Verzeichnis <literal>users/.openoffice.org2</literal>.
|
||
Eventuell muss dieses Verzeichnis umbenannt werden.</para>
|
||||
7ee506b3 | Moritz Bunkus | |||
<para>Dieses Verzeichnis, wie auch das komplette
|
||||
<literal>users</literal>-Verzeichnis, muss vom Webserver beschreibbar
|
||||
sein. Dieses wurde bereits erledigt (siehe <xref
|
||||
5ad10035 | Moritz Bunkus | linkend="Manuelle-Installation-des-Programmpaketes"/>), kann aber
|
||
erneut überprüft werden, wenn die Konvertierung nach PDF
|
||||
2e917eea | Andreas Rudin | fehlschlägt.</para>
|
||
0e14ae06 | Andreas Zenklusen | |||
<sect2>
|
||||
<title>OpenDocument (odt) Druckvorlagen mit Makros</title>
|
||||
<para>OpenDocument Vorlagen können Makros enthalten, welche komplexere
|
||||
Aufgaben erfüllen.</para>
|
||||
<para>Der Vorlagensatz "rev-odt" enthält solche Vorlagen mit <emphasis
|
||||
role="bold">Schweizer Bank-Einzahlungsscheinen (BESR)</emphasis>.
|
||||
Diese Makros haben die Aufgabe, die in den Einzahlungsscheinen
|
||||
benötigte Referenznummer und Kodierzeile zu erzeugen. Hier eine kurze
|
||||
Beschreibung, wie die Makros aufgebaut sind, und was bei ihrer Nutzung
|
||||
zu beachten ist (<emphasis role="bold">in fett sind nötige einmalige
|
||||
Anpassungen aufgeführt</emphasis>):</para>
|
||||
<sect3>
|
||||
<title>Bezeichnung der Vorlagen</title>
|
||||
<para>Rechnung: invoice_besr.odt, Auftrag:
|
||||
sales_order_besr.odt</para>
|
||||
</sect3>
|
||||
<sect3>
|
||||
<title>Vorbereitungen im Adminbereich</title>
|
||||
<para>Damit beim Erstellen von Rechnungen und Aufträgen neben der
|
||||
Standardvorlage ohne Einzahlungsschein weitere Vorlagen (z.B. mit
|
||||
Einzahlungsschein) auswählbar sind, muss für jedes Vorlagen-Suffix
|
||||
ein Drucker eingerichtet werden:</para>
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
2e917eea | Andreas Rudin | <para>Druckeradministration → Drucker hinzufügen</para>
|
||
0e14ae06 | Andreas Zenklusen | </listitem>
|
||
<listitem>
|
||||
<para>Mandant wählen</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
2e917eea | Andreas Rudin | <para>Druckerbeschreibung → aussagekräftiger Text: wird in
|
||
0e14ae06 | Andreas Zenklusen | der Auftrags- bzw. Rechnungsmaske als Auswahl angezeigt (z.B.
|
||
mit Einzahlungsschein Bank xy)</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
2e917eea | Andreas Rudin | <para>Druckbefehl → beliebiger Text (hat für das Erzeugen
|
||
0e14ae06 | Andreas Zenklusen | von Aufträgen oder Rechnungen als odt-Datei keine Bedeutung,
|
||
darf aber nicht leer sein)</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
2e917eea | Andreas Rudin | <para>Vorlagenkürzel → besr bzw. selbst gewähltes
|
||
0e14ae06 | Andreas Zenklusen | Vorlagensuffix (muss genau der Zeichenfolge entsprechen, die
|
||
zwischen "invoice_" bzw. "sales_order_" und ".odt"
|
||||
steht.)</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>speichern</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
</sect3>
|
||||
<sect3>
|
||||
<title>Benutzereinstellungen</title>
|
||||
<para>Wer den Ausdruck mit Einzahlungsschein als Standardeinstellung
|
||||
im Rechnungs- bzw. Auftragsformular angezeigt haben möchte, kann
|
||||
dies persönlich für sich bei den Benutzereinstellungen
|
||||
konfigurieren:</para>
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
2e917eea | Andreas Rudin | <para>Programm → Benutzereinstellungen →
|
||
0e14ae06 | Andreas Zenklusen | Druckoptionen</para>
|
||
</listitem>
|
||||
<listitem>
|
||||
2e917eea | Andreas Rudin | <para>Standardvorlagenformat → OpenDocument/OASIS</para>
|
||
0e14ae06 | Andreas Zenklusen | </listitem>
|
||
<listitem>
|
||||
2e917eea | Andreas Rudin | <para>Standardausgabekanal → Bildschirm</para>
|
||
0e14ae06 | Andreas Zenklusen | </listitem>
|
||
<listitem>
|
||||
2e917eea | Andreas Rudin | <para>Standarddrucker → gewünschte Druckerbeschreibung
|
||
0e14ae06 | Andreas Zenklusen | auswählen (z.B. mit Einzahlungsschein Bank xy)</para>
|
||
</listitem>
|
||||
<listitem>
|
||||
2e917eea | Andreas Rudin | <para>Anzahl Kopien → leer</para>
|
||
0e14ae06 | Andreas Zenklusen | </listitem>
|
||
<listitem>
|
||||
<para>speichern</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
</sect3>
|
||||
<sect3>
|
||||
<title>Aufbau und nötige Anpassungen der Vorlagen</title>
|
||||
<para>In der Vorlage sind als Modul "BESR" 4 Makros gespeichert, die
|
||||
aus dem von kivitendo erzeugten odt-Dokument die korrekte
|
||||
Referenznummer inklusive Prüfziffer sowie die Kodierzeile in
|
||||
OCRB-Schrift erzeugen und am richtigen Ort ins Dokument
|
||||
schreiben.</para>
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para>Für den Einzahlungsschein ist die letzte Seite des
|
||||
Dokuments reserviert</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>Direkt über dem Einzahlungsschein enthält die Vorlage eine
|
||||
Zeile mit folgenden Angaben (<emphasis
|
||||
role="bold">Bank-Konto-Identifikationsnummer und
|
||||
Postkonto-Nummer der Bank müssen gemäss Angaben der jeweiligen
|
||||
Bank angepasst werden</emphasis>):<itemizedlist>
|
||||
<listitem>
|
||||
<para>DDDREF: 4 Werte zum Bilden der Referenznummer
|
||||
(jeweils durch einen Leerschlag getrennt): <itemizedlist>
|
||||
<listitem>
|
||||
<para>erster Wert: <emphasis
|
||||
role="bold">Bank-Konto-Identifikation</emphasis>
|
||||
(nur Ziffern, maximal 6), <emphasis role="bold">muss
|
||||
angepasst werden</emphasis>.</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>zweiter Wert: <%customernumber%>
|
||||
(Kundennummer: nur Ziffern, maximal 6)</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>dritter Wert: <%ordnumber%>
|
||||
(Auftragsnummer bei Auftragsvorlage
|
||||
sales_oder_besr.odt, sonst 0) maximal 7 Ziffern,
|
||||
führende Buchstaben werden vom Makro entfernt</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>vierter Wert: <%invnumber%>
|
||||
(Rechnungsnummer bei Rechnungsvorlage
|
||||
invoice_besr.odt, sonst 0) maximal 7 Ziffern,
|
||||
führende Buchstaben werden vom Makro entfernt</para>
|
||||
</listitem>
|
||||
</itemizedlist></para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>DDDKONTO: <emphasis role="bold">Postkonto-Nummer der
|
||||
Bank, muss angepasst werden</emphasis>.</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>DDDBETRAG: <%total%> Einzahlungsbetrag oder 0,
|
||||
falls Einzahlungsschein ohne Betrag</para>
|
||||
</listitem>
|
||||
5ad10035 | Moritz Bunkus | |||
2e917eea | Andreas Rudin | <listitem>
|
||
<para>DDDEND: muss am Ende der Zeile vorhanden sein</para>
|
||||
</listitem>
|
||||
0e14ae06 | Andreas Zenklusen | </itemizedlist></para>
|
||
</listitem>
|
||||
<listitem>
|
||||
<para><emphasis role="bold">Im Einzahlungsschein selbst müssen
|
||||
der Name und die Adresse der Bank, die Postkonto-Nummer der
|
||||
Bank, sowie der eigene Firmenname und die Firmenadresse
|
||||
angepasst werden.</emphasis> Dabei ist darauf zu achten, dass
|
||||
sich die Positionen der Postkonto-Nummern der Bank, sowie der
|
||||
Zeichenfolgen dddfr, DDDREF1, DDDREF2, 609, DDDKODIERZEILE nicht
|
||||
verschieben.</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
<screenshot>
|
||||
<screeninfo>Rechnungsvorlage Schweizer Bank-Einzahlungsschein - zu
|
||||
ändernde Einträge in rot</screeninfo>
|
||||
<mediaobject>
|
||||
<imageobject>
|
||||
<imagedata fileref="images/Einzahlungsschein_Makro.png"/>
|
||||
</imageobject>
|
||||
</mediaobject>
|
||||
</screenshot>
|
||||
</sect3>
|
||||
<sect3>
|
||||
<title>Auswahl der Druckvorlage in kivitendo beim Erzeugen einer
|
||||
odt-Rechnung (analog bei Auftrag)</title>
|
||||
<para>Im Fussbereich der Rechnungsmaske muss neben Rechnung,
|
||||
OpenDocument/OASIS und Bildschirm die im Adminbereich erstellte
|
||||
Druckerbeschreibung ausgewählt werden, falls diese nicht bereits bei
|
||||
den Benutzereinstellungen als persönlicher Standard gewählt
|
||||
wurde.</para>
|
||||
</sect3>
|
||||
<sect3>
|
||||
<title>Makroeinstellungen in LibreOffice anpassen</title>
|
||||
<para>Falls beim Öffnen einer von kivitendo erzeugten odt-Rechnung
|
||||
die Meldung kommt, dass Makros aus Sicherheitsgründen nicht
|
||||
ausgeführt werden, so müssen folgende Einstellungen in LibreOffice
|
||||
angepasst werden:</para>
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
2e917eea | Andreas Rudin | <para>Extras → Optionen → Sicherheit →
|
||
0e14ae06 | Andreas Zenklusen | Makrosicherheit</para>
|
||
</listitem>
|
||||
<listitem>
|
||||
<para>Sicherheitslevel auf "Mittel" einstellen (Diese
|
||||
Einstellung muss auf jedem Computer durchgeführt werden, mit dem
|
||||
von kivitendo erzeugte odt-Rechnungen oder Aufträge geöffnet
|
||||
werden.)</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>Beim Öffnen einer odt-Rechnung oder eines odt-Auftrags bei
|
||||
der entsprechenden Nachfrage "Makros ausführen" auswählen.
|
||||
</para>
|
||||
<para><emphasis role="bold">Wichtig</emphasis>: die Makros sind
|
||||
so eingestellt, dass sie beim Öffnen der Vorlagen selbst nicht
|
||||
ausgeführt werden. Das heisst für das Ansehen und Bearbeiten der
|
||||
Vorlagen sind keine speziellen Einstellungen in LibreOffice
|
||||
nötig.</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
</sect3>
|
||||
</sect2>
|
||||
7ee506b3 | Moritz Bunkus | </sect1>
|
||
539f5981 | Moritz Bunkus | <sect1 id="config.eur">
|
||
3adb0cb7 | Moritz Bunkus | <title>Konfiguration zur Einnahmenüberschussrechnung/Bilanzierung:
|
||
EUR</title>
|
||||
539f5981 | Moritz Bunkus | |||
3adb0cb7 | Moritz Bunkus | <sect2 id="config.eur.introduction"
|
||
xreflabel="Einführung in die Konfiguration zur EUR">
|
||||
<title>Einführung</title>
|
||||
539f5981 | Moritz Bunkus | |||
0e14ae06 | Andreas Zenklusen | <para>kivitendo besaß bis inklusive Version 2.6.3 einen
|
||
Konfigurationsparameter namens <varname>eur</varname>, der sich in der
|
||||
Konfigurationsdatei <filename>config/kivitendo.conf</filename> (damals
|
||||
noch <filename>config/lx_office.conf</filename>) befand. Somit galt er
|
||||
für alle Mandanten, die in dieser Installation benutzt wurden.</para>
|
||||
539f5981 | Moritz Bunkus | |||
3adb0cb7 | Moritz Bunkus | <para>Mit der nachfolgenden Version wurde der Parameter zum Einen in
|
||
die Mandantendatenbank verschoben und dabei auch gleich in drei
|
||||
Einzelparameter aufgeteilt, mit denen sich das Verhalten genauer
|
||||
steuern lässt.</para>
|
||||
539f5981 | Moritz Bunkus | </sect2>
|
||
3adb0cb7 | Moritz Bunkus | <sect2 id="config.eur.parameters"
|
||
xreflabel="Konfigurationsparameter für EUR">
|
||||
<title>Konfigurationsparameter</title>
|
||||
<para>Es gibt drei Parameter, die die Gewinnermittlungsart,
|
||||
Versteuerungsart und die Warenbuchungsmethode regeln:</para>
|
||||
<variablelist>
|
||||
<varlistentry>
|
||||
<term><varname>profit_determination</varname></term>
|
||||
<listitem>
|
||||
<para>Dieser Parameter legt die Berechnungsmethode für die
|
||||
Gewinnermittlung fest. Er enthält entweder
|
||||
<literal>balance</literal> für
|
||||
Betriebsvermögensvergleich/Bilanzierung oder
|
||||
<literal>income</literal> für die
|
||||
Einnahmen-Überschuss-Rechnung.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><varname>accounting_method</varname></term>
|
||||
<listitem>
|
||||
<para>Dieser Parameter steuert die Buchungs- und
|
||||
Berechnungsmethoden für die Versteuerungsart. Er enthält
|
||||
entweder <literal>accrual</literal> für die Soll-Versteuerung
|
||||
oder <literal>cash</literal> für die Ist-Versteuerung.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><varname>inventory_system</varname></term>
|
||||
<listitem>
|
||||
<para>Dieser Parameter legt die Warenbuchungsmethode fest. Er
|
||||
enthält entweder <literal>perpetual</literal> für die
|
||||
Bestandsmethode oder <literal>periodic</literal> für die
|
||||
Aufwandsmethode.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
<para>Zum Vergleich der Funktionalität bis und nach 2.6.3:
|
||||
<varname>eur</varname> = 1 bedeutete Einnahmen-Überschuss-Rechnung,
|
||||
Ist-Versteuerung und Aufwandsmethode. <varname>eur</varname> = 0
|
||||
bedeutete hingegen Bilanzierung, Soll-Versteuerung und
|
||||
Bestandsmethode.</para>
|
||||
<para>Die Konfiguration "<varname>eur</varname>" unter
|
||||
<varname>[system]</varname> in der <link
|
||||
linkend="config.config-file">Konfigurationsdatei</link>
|
||||
5fa26f9a | Moritz Bunkus | <filename>config/kivitendo.conf</filename> wird nun nicht mehr
|
||
3adb0cb7 | Moritz Bunkus | benötigt und kann entfernt werden. Dies muss manuell geschehen.</para>
|
||
539f5981 | Moritz Bunkus | </sect2>
|
||
<sect2 id="config.eur.setting-parameters">
|
||||
3adb0cb7 | Moritz Bunkus | <title>Festlegen der Parameter</title>
|
||
<para>Beim Anlegen eines neuen Mandanten bzw. einer neuen Datenbank in
|
||||
der Admininstration können diese Optionen nun unabhängig voneinander
|
||||
eingestellt werden.</para>
|
||||
5ad10035 | Moritz Bunkus | |||
2e917eea | Andreas Rudin | <para>Für die Schweiz sind folgende Einstellungen üblich:
|
||
<itemizedlist>
|
||||
<listitem>
|
||||
<para>Sollversteuerung</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>Aufwandsmethode</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>Bilanzierung</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
5ad10035 | Moritz Bunkus | Diese Einstellungen werden automatisch beim Erstellen einer neuen
|
||
Datenbank vorausgewählt, wenn in <filename>config/kivitendo.conf</filename> unter
|
||||
<varname>[system]</varname> <literal>default_manager = swiss</literal> eingestellt ist.
|
||||
2e917eea | Andreas Rudin | </para>
|
||
3adb0cb7 | Moritz Bunkus | |||
<para>Beim Upgrade bestehender Mandanten wird eur ausgelesen und die
|
||||
Variablen werden so gesetzt, daß sich an der Funktionalität nichts
|
||||
ändert.</para>
|
||||
<para>Die aktuelle Konfiguration wird unter Nummernkreise und
|
||||
6c0c0f2c | Bernd Bleßmann | Standardkonten unter dem neuen Punkt "Einstellungen" (read-only)
|
||
2e917eea | Andreas Rudin | angezeigt. Unter <guimenu>System</guimenu> →
|
||
0e14ae06 | Andreas Zenklusen | <guisubmenu>Mandantenkonfiguration</guisubmenu> können die
|
||
Einstellungen auch geändert werden. Dabei ist zu beachten, dass eine
|
||||
Änderung vorhandene Daten so belässt und damit evtl. die Ergebnisse
|
||||
verfälscht. Dies gilt vor Allem für die Warenbuchungsmethode (siehe
|
||||
auch <link linkend="config.eur.inventory-system-perpetual">
|
||||
2096308e | Geoffrey Richardson | Bemerkungen zur Bestandsmethode</link>).</para>
|
||
539f5981 | Moritz Bunkus | </sect2>
|
||
<sect2 id="config.eur.inventory-system-perpetual">
|
||||
2096308e | Geoffrey Richardson | <title>Bemerkungen zur Bestandsmethode</title>
|
||
3adb0cb7 | Moritz Bunkus | |||
<para>Die Bestandsmethode ist eigentlich eine sehr elegante Methode,
|
||||
5fa26f9a | Moritz Bunkus | funktioniert in kivitendo aber nur unter bestimmten Bedingungen:
|
||
3adb0cb7 | Moritz Bunkus | Voraussetzung ist, daß auch immer alle Einkaufsrechnungen gepflegt
|
||
werden, und man beim Jahreswechsel nicht mit einer leeren Datenbank
|
||||
anfängt, da bei jedem Verkauf anhand der gesamten Rechnungshistorie
|
||||
der Einkaufswert der Ware nach dem FIFO-Prinzip aus den
|
||||
Einkaufsrechnungen berechnet wird.</para>
|
||||
<para>Die Bestandsmethode kann vom Prinzip her also nur funktioneren,
|
||||
wenn man mit den Buchungen bei Null anfängt, und man kann auch nicht
|
||||
im laufenden Betrieb von der Aufwandsmethode zur Bestandsmethode
|
||||
wechseln.</para>
|
||||
539f5981 | Moritz Bunkus | </sect2>
|
||
<sect2 id="config.eur.knonw-issues">
|
||||
3adb0cb7 | Moritz Bunkus | <title>Bekannte Probleme</title>
|
||
539f5981 | Moritz Bunkus | |||
3adb0cb7 | Moritz Bunkus | <para>Bei bestimmten Berichten kann man derzeit noch inviduell
|
||
einstellen, ob man nach Ist- oder Sollversteuerung auswertet, und es
|
||||
werden im Code Variablen wie $accrual oder $cash gesetzt. Diese
|
||||
Codestellen wurden noch nicht angepasst, sondern nur die, wo bisher
|
||||
die Konfigurationsvariable
|
||||
<varname>$::lx_office_conf{system}->{eur}</varname> ausgewertet
|
||||
wurde.</para>
|
||||
539f5981 | Moritz Bunkus | |||
3adb0cb7 | Moritz Bunkus | <para>Es fehlen Hilfetext beim Neuanlegen eines Mandanten, was die
|
||
Optionen bewirken, z.B. mit zwei Standardfällen.</para>
|
||||
</sect2>
|
||||
</sect1>
|
||||
<sect1 id="config.skr04-update-3804">
|
||||
<title>SKR04 19% Umstellung für innergemeinschaftlichen Erwerb</title>
|
||||
<sect2 id="config.skr04-update-3804.introduction">
|
||||
<title>Einführung</title>
|
||||
<para>Die Umsatzsteuerumstellung auf 19% für SKR04 für die
|
||||
Steuerschlüssel "EU ohne USt-ID Nummer" ist erst 2010 erfolgt.
|
||||
5fa26f9a | Moritz Bunkus | kivitendo beinhaltet ein Upgradeskript, das das Konto 3804 automatisch
|
||
3adb0cb7 | Moritz Bunkus | erstellt und die Steuereinstellungen korrekt einstellt. Hat der
|
||
Benutzer aber schon selber das Konto 3804 angelegt, oder gab es schon
|
||||
Buchungen im Zeitraum nach dem 01.01.2007 auf das Konto 3803, wird das
|
||||
Upgradeskript vorsichtshalber nicht ausgeführt, da der Benutzer sich
|
||||
vielleicht schon selbst geholfen hat und mit seinen Änderungen
|
||||
zufrieden ist. Die korrekten Einstellungen kann man aber auch per Hand
|
||||
ausführen. Nachfolgend werden die entsprechenden Schritte anhand von
|
||||
Screenshots dargestellt.</para>
|
||||
<para>Für den Fall, daß Buchungen mit der Steuerschlüssel "EU ohne
|
||||
USt.-IdNr." nach dem 01.01.2007 erfolgt sind, ist davon auszugehen,
|
||||
dass diese mit dem alten Umsatzsteuersatz von 16% gebucht worden sind,
|
||||
und diese Buchungen sollten entsprechend kontrolliert werden.</para>
|
||||
</sect2>
|
||||
<sect2 id="config.skr04-update-3804.create-chart">
|
||||
<title>Konto 3804 manuell anlegen</title>
|
||||
<para>Die folgenden Schritte sind notwendig, um das Konto manuell
|
||||
anzulegen und zu konfigurieren. Zuerst wird in
|
||||
2e917eea | Andreas Rudin | <guimenu>System</guimenu> →
|
||
<guisubmenu>Kontenübersicht</guisubmenu> → <guimenuitem>Konto
|
||||
3adb0cb7 | Moritz Bunkus | erfassen</guimenuitem> das Konto angelegt.</para>
|
||
<screenshot>
|
||||
<screeninfo>Konto 3804 erfassen</screeninfo>
|
||||
<mediaobject>
|
||||
<imageobject>
|
||||
0e14ae06 | Andreas Zenklusen | <imagedata fileref="images/skr04-update-3804/konto3804.png"/>
|
||
3adb0cb7 | Moritz Bunkus | </imageobject>
|
||
</mediaobject>
|
||||
</screenshot>
|
||||
0e14ae06 | Andreas Zenklusen | <para>Als Zweites muss Steuergruppe 13 für Konto 3803 angepasst
|
||
2e917eea | Andreas Rudin | werden. Dazu unter <guimenu>System</guimenu> →
|
||
<guisubmenu>Steuern</guisubmenu> →
|
||||
0e14ae06 | Andreas Zenklusen | <guimenuitem>Bearbeiten</guimenuitem> den Eintrag mit Steuerschlüssel
|
||
13 auswählen und ihn wie im folgenden Screenshot angezeigt
|
||||
anpassen.</para>
|
||||
3adb0cb7 | Moritz Bunkus | |||
<screenshot>
|
||||
<screeninfo>Steuerschlüssel 13 für 3803 (16%) anpassen</screeninfo>
|
||||
<mediaobject>
|
||||
<imageobject>
|
||||
0e14ae06 | Andreas Zenklusen | <imagedata fileref="images/skr04-update-3804/steuer3803.png"/>
|
||
3adb0cb7 | Moritz Bunkus | </imageobject>
|
||
</mediaobject>
|
||||
</screenshot>
|
||||
0e14ae06 | Andreas Zenklusen | <para>Als Drittes wird ein neuer Eintrag mit Steuerschlüssel 13 für
|
||
2e917eea | Andreas Rudin | Konto 3804 (19%) angelegt. Dazu unter <guimenu>System</guimenu> →
|
||
<guisubmenu>Steuern</guisubmenu> →
|
||||
0e14ae06 | Andreas Zenklusen | <guimenuitem>Erfassen</guimenuitem> auswählen und die Werte aus dem
|
||
Screenshot übernehmen.</para>
|
||||
3adb0cb7 | Moritz Bunkus | |||
<screenshot>
|
||||
<screeninfo>Steuerschlüssel 13 für 3804 (19%) anlegen</screeninfo>
|
||||
<mediaobject>
|
||||
<imageobject>
|
||||
0e14ae06 | Andreas Zenklusen | <imagedata fileref="images/skr04-update-3804/steuer3804.png"/>
|
||
3adb0cb7 | Moritz Bunkus | </imageobject>
|
||
</mediaobject>
|
||||
</screenshot>
|
||||
0e14ae06 | Andreas Zenklusen | <para>Als Nächstes sind alle Konten anzupassen, die als
|
||
Steuerautomatikkonto die 3803 haben, sodass sie ab dem 1.1.2007 auch
|
||||
Steuerautomatik auf 3804 bekommen. Dies betrifft in der
|
||||
Standardkonfiguration die Konten 4315 und 4726. Als Beispiel für 4315
|
||||
2e917eea | Andreas Rudin | müssen Sie dazu unter <guimenu>System</guimenu> →
|
||
<guisubmenu>Kontenübersicht</guisubmenu> → <guimenuitem>Konten
|
||||
0e14ae06 | Andreas Zenklusen | anzeigen</guimenuitem> das Konto 4315 anklicken und die Einstellungen
|
||
wie im Screenshot gezeigt vornehmen.</para>
|
||||
3adb0cb7 | Moritz Bunkus | |||
<screenshot>
|
||||
<screeninfo>Konto 4315 anpassen</screeninfo>
|
||||
<mediaobject>
|
||||
<imageobject>
|
||||
0e14ae06 | Andreas Zenklusen | <imagedata fileref="images/skr04-update-3804/konto4315.png"/>
|
||
3adb0cb7 | Moritz Bunkus | </imageobject>
|
||
</mediaobject>
|
||||
</screenshot>
|
||||
0e14ae06 | Andreas Zenklusen | <para>Als Letztes sollte die Steuerliste unter
|
||
2e917eea | Andreas Rudin | <guimenu>System</guimenu> → <guisubmenu>Steuern</guisubmenu> →
|
||
0e14ae06 | Andreas Zenklusen | <guimenuitem>Bearbeiten</guimenuitem> kontrolliert werden. Zum
|
||
Vergleich der Screenshot.</para>
|
||||
3adb0cb7 | Moritz Bunkus | |||
<screenshot>
|
||||
<screeninfo>Steuerliste vergleichen</screeninfo>
|
||||
<mediaobject>
|
||||
<imageobject>
|
||||
0e14ae06 | Andreas Zenklusen | <imagedata fileref="images/skr04-update-3804/steuerliste.png"/>
|
||
3adb0cb7 | Moritz Bunkus | </imageobject>
|
||
</mediaobject>
|
||||
</screenshot>
|
||||
539f5981 | Moritz Bunkus | </sect2>
|
||
</sect1>
|
||||
0e14ae06 | Andreas Zenklusen | |||
2e917eea | Andreas Rudin | <sect1 id="config.bilanz">
|
||
0e14ae06 | Andreas Zenklusen | <title>Verhalten des Bilanzberichts</title>
|
||
<para>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.</para>
|
||||
<para>In der Mandantenkonfiguration kann man dieses Verhalten genau
|
||||
einstellen indem man:</para>
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para>weiterhin closed_to benutzt (Default, es ändert sich nichts zu
|
||||
vorher)</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>immer den Jahresanfang nimmt (1.1. relativ zum
|
||||
Stichtag)</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>immer die letzte Eröffnungsbuchung als Startdatum nimmt</para>
|
||||
<para>- mit Jahresanfang als Alternative wenn es keine EB-Buchungen
|
||||
gibt</para>
|
||||
<para>- oder mit "alle Buchungen" als Alternative"</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>mit Jahresanfang als Alternative wenn es keine EB-Buchungen
|
||||
gibt</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>immer alle Buchungen seit Beginn der Datenbank nimmt</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
<para>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 dem 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.
|
||||
5ad10035 | Moritz Bunkus | Das hilft auch bei der Kontrolle für den Abgleich mit der GuV bzw.
|
||
2e917eea | Andreas Rudin | Erfolgsrechnung.</para>
|
||
</sect1>
|
||||
5ad10035 | Moritz Bunkus | |||
2e917eea | Andreas Rudin | <sect1 id="config.erfolgsrechnung">
|
||
<title>Erfolgsrechnung</title>
|
||||
5ad10035 | Moritz Bunkus | |||
2e917eea | Andreas Rudin | <para>Seit der Version 3.4.1 existiert in kivitendo der Bericht <emphasis role="bold">
|
||
Erfolgsrechnung</emphasis>.</para>
|
||||
5ad10035 | Moritz Bunkus | |||
<para>Die Erfolgsrechnung kann in der Mandantenkonfiguration unter Features
|
||||
2e917eea | Andreas Rudin | an- oder abgeschaltet werden. Mit der Einstellung <varname>default_manager = swiss
|
||
5ad10035 | Moritz Bunkus | </varname> in der <filename>config/kivitendo.conf</filename> wird beim neu Erstellen
|
||
2e917eea | Andreas Rudin | einer Datenbank automatisch die Anzeige der Erfolgsrechnung im Menü <guimenu>Berichte
|
||
</guimenu> ausgewählt und ersetzt dort die GUV.</para>
|
||||
5ad10035 | Moritz Bunkus | |||
<para>Im Gegensatz zur GUV werden bei der Erfolgsrechnung sämtliche Aufwands- und
|
||||
2e917eea | Andreas Rudin | Erlöskonten einzeln aufgelistet (analog zur Bilanz), sortiert nach ERTRAG und AUFWAND.</para>
|
||
5ad10035 | Moritz Bunkus | |||
<para>Bei den Konteneinstellungen muss bei jedem Konto, das in der Erfolgsrechnung
|
||||
erscheinen soll, unter <varname>Sonstige Einstellungen/Erfolgsrechnung</varname>
|
||||
entweder <literal>01.Ertrag</literal> oder <literal>06.Aufwand</literal> ausgewählt
|
||||
2e917eea | Andreas Rudin | werden.</para>
|
||
5ad10035 | Moritz Bunkus | |||
<para>Wird bei einem Erlöskonto <literal>06.Aufwand</literal> ausgewählt,
|
||||
2e917eea | Andreas Rudin | so wird dieses Konto als Aufwandsminderung unter AUFWAND aufgelistet.</para>
|
||
5ad10035 | Moritz Bunkus | |||
<para>Wird bei einem Aufwandskonto <literal>01.Ertrag</literal> ausgewählt,
|
||||
2e917eea | Andreas Rudin | so wird dieses Konto als Ertragsminderung unter ERTRAG aufgelistet.</para>
|
||
5ad10035 | Moritz Bunkus | |||
<para>Soll bei einer bereits bestehenden Buchhaltung in Zukunft zusätzlich
|
||||
die Erfolgsrechnung als Bericht verwendet werden, so müssen die Einstellungen
|
||||
zu allen Erlös- und Aufwandskonten unter <varname>Sonstige
|
||||
d2f731ca | Andreas Rudin | Einstellungen/Erfolgsrechnung</varname> überprüft und allenfalls neu gesetzt werden.</para>
|
||
2e917eea | Andreas Rudin | </sect1>
|
||
5ad10035 | Moritz Bunkus | |||
2e917eea | Andreas Rudin | <sect1 id="config.rounding">
|
||
<title>Rundung in Verkaufsbelegen</title>
|
||||
5ad10035 | Moritz Bunkus | |||
2e917eea | Andreas Rudin | <para>In der Schweiz hat die kleinste aktuell benutzte Münze den Wert von 5 Rappen (0.05 CHF).</para>
|
||
5ad10035 | Moritz Bunkus | |||
<para>Auch wenn im elektronischen Zahlungsverkehr Beträge mit einer Genauigkeit
|
||||
von 0.01 CHF verwendet werden können, ist es trotzdem nach wie vor üblich,
|
||||
2e917eea | Andreas Rudin | Rechnungen mit auf 0.05 CHF gerundeten Beträgen auszustellen.</para>
|
||
5ad10035 | Moritz Bunkus | |||
<para>In kivitendo kann seit der Version 3.4.1 die Einstellung für eine solche
|
||||
2e917eea | Andreas Rudin | Rundung pro Mandant / Datenbank festgelegt werden.</para>
|
||
5ad10035 | Moritz Bunkus | |||
<para>Die Einstellung wird beim Erstellen der Datenbank bei <literal>Genauigkeit</literal>
|
||||
festgelegt. Sie kann anschliessend über das Webinterface von kivitendo nicht mehr
|
||||
2e917eea | Andreas Rudin | verändert werden.</para>
|
||
5ad10035 | Moritz Bunkus | |||
<para>Abhängig vom Wert für <varname>default_manager</varname> in
|
||||
<filename>config/kivitendo.conf</filename> werden dabei folgende
|
||||
2e917eea | Andreas Rudin | Werte voreingestellt:</para>
|
||
<itemizedlist>
|
||||
<listitem>
|
||||
<para>0.05 (default_manager = swiss)</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>0.01 (default_manager = german)</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
5ad10035 | Moritz Bunkus | <para>Der Wert wird in der Datenbank in der Tabelle <varname>defaults
|
||
2e917eea | Andreas Rudin | </varname>in der Spalte <varname>precision</varname> gespeichert.</para>
|
||
5ad10035 | Moritz Bunkus | |||
<para>In allen Verkaufsangeboten, Verkaufsaufträgen, Verkaufsrechnungen
|
||||
und Verkaufsgutschriften wird der Endbetrag inkl. MWST gerundet,
|
||||
2e917eea | Andreas Rudin | wenn dieser nicht der eingestellten Genauigkeit entspricht.</para>
|
||
5ad10035 | Moritz Bunkus | |||
<para>Beim Buchen einer Verkaufsrechnung wird der Rundungsbetrag
|
||||
automatisch auf die in der Mandantenkonfiguration festgelegten
|
||||
2e917eea | Andreas Rudin | Standardkonten für Rundungserträge bzw. Rundungsaufwendungen gebucht.</para>
|
||
5ad10035 | Moritz Bunkus | |||
2e917eea | Andreas Rudin | <para>(Die berechnete MWST wird durch den Rundungsbetrag nicht mehr verändert.)</para>
|
||
5ad10035 | Moritz Bunkus | |||
<para>Die in den Druckvorlagen zur Verfügung stehenden Variablen
|
||||
<varname>quototal</varname>, <varname>ordtotal</varname> bzw.
|
||||
d2f731ca | Andreas Rudin | <varname>invtotal</varname> enthalten den gerundeten Betrag.</para>
|
||
5ad10035 | Moritz Bunkus | |||
<para><emphasis role="bold">Achtung:</emphasis> Werden Verkaufsbelege
|
||||
in anderen Währungen als der Standardwährung erstellt, so muss in
|
||||
ec1eaba1 | Geoffrey Richardson | kivitendo ab Version 3.4.1 die Genauigkeit 0.01 verwendet werden.</para>
|
||
5ad10035 | Moritz Bunkus | <para>Das heisst, Firmen in der Schweiz, die teilweise Verkaufsrechnungen
|
||
in Euro oder anderen Währungen erstellen wollen, müssen beim Erstellen
|
||||
der Datenbank als Genauigkeit 0.01 wählen und können zur Zeit die
|
||||
5er Rundung noch nicht nutzen.</para>
|
||||
1d38d96d | Jan Büren | </sect1>
|
||
0e14ae06 | Andreas Zenklusen | |||
6c0c0f2c | Bernd Bleßmann | <sect1 id="config.client">
|
||
<title>Einstellungen pro Mandant</title>
|
||||
0e14ae06 | Andreas Zenklusen | <para>Einige Einstellungen können von einem Benutzer mit dem <link
|
||
linkend="Zusammenhänge">Recht</link> "Administration (Für die Verwaltung
|
||||
der aktuellen Instanz aus einem Userlogin heraus)" gemacht werden. Diese
|
||||
Einstellungen sind dann für die aktuellen Mandanten-Datenbank gültig.
|
||||
2e917eea | Andreas Rudin | Die Einstellungen sind unter <guimenu>System</guimenu> →
|
||
0e14ae06 | Andreas Zenklusen | <guisubmenu>Mandantenkonfiguration</guisubmenu> erreichbar.</para>
|
||
<para>Bitte beachten Sie die Hinweise zu den einzelnen Einstellungen.
|
||||
Einige Einstellungen sollten nicht ohne Weiteres im laufenden Betrieb
|
||||
geändert werden (siehe auch <link
|
||||
linkend="config.eur.inventory-system-perpetual">Bemerkungen zu
|
||||
6c0c0f2c | Bernd Bleßmann | Bestandsmethode</link>).</para>
|
||
0e14ae06 | Andreas Zenklusen | <para>Die Einstellungen <literal>show_bestbefore</literal> und
|
||
<literal>payments_changeable</literal> aus dem Abschnitt
|
||||
<literal>features</literal> und die Einstellungen im Abschnitt
|
||||
<literal>datev_check</literal> (sofern schon vorhanden) der <link
|
||||
linkend="config.config-file">kivitendo-Konfigurationsdatei</link> werden
|
||||
bei einem Datenbankupdate einer älteren Version automatisch übernommen.
|
||||
Diese Einträge können danach aus der Konfigurationsdatei entfernt
|
||||
werden.</para>
|
||||
6c0c0f2c | Bernd Bleßmann | </sect1>
|
||
5fa26f9a | Moritz Bunkus | <sect1 id="kivitendo-ERP-verwenden">
|
||
<title>kivitendo ERP verwenden</title>
|
||||
7ee506b3 | Moritz Bunkus | |||
<para>Nach erfolgreicher Installation ist der Loginbildschirm unter
|
||||
folgender URL erreichbar:</para>
|
||||
<para><ulink
|
||||
5fa26f9a | Moritz Bunkus | url="http://localhost/kivitendo-erp/login.pl">http://localhost/kivitendo-erp/login.pl</ulink></para>
|
||
7ee506b3 | Moritz Bunkus | |||
<para>Die Administrationsseite erreichen Sie unter:</para>
|
||||
<para><ulink
|
||||
854c9a62 | Moritz Bunkus | url="http://localhost/kivitendo-erp/controller.pl?action=Admin/login">http://localhost/kivitendo-erp/controller.pl?action=Admin/login</ulink></para>
|
||
7ee506b3 | Moritz Bunkus | </sect1>
|
||
</chapter>
|
||||
90baed86 | Moritz Bunkus | <chapter id="features" xreflabel="Features und Funktionen">
|
||
6023717e | Moritz Bunkus | <title>Features und Funktionen</title>
|
||
3adb0cb7 | Moritz Bunkus | <sect1 id="features.periodic-invoices"
|
||
cb484787 | Geoffrey Richardson | xreflabel="Wiederkehrende Rechnungen">
|
||
3adb0cb7 | Moritz Bunkus | <title>Wiederkehrende Rechnungen</title>
|
||
6023717e | Moritz Bunkus | |||
3adb0cb7 | Moritz Bunkus | <sect2 id="features.periodic-invoices.introduction"
|
||
xreflabel="Einführung in wiederkehrende Rechnungen">
|
||||
<title>Einführung</title>
|
||||
6023717e | Moritz Bunkus | |||
3adb0cb7 | Moritz Bunkus | <para>Wiederkehrende Rechnungen werden als normale Aufträge definiert
|
||
und konfiguriert, mit allen dazugehörigen Kunden- und Artikelangaben.
|
||||
Die konfigurierten Aufträge werden später automatisch in Rechnungen
|
||||
umgewandelt, so als ob man den Workflow benutzen würde, und auch die
|
||||
Auftragsnummer wird übernommen, sodass alle wiederkehrenden
|
||||
Rechnungen, die aus einem Auftrag erstellt wurden, später leicht
|
||||
wiederzufinden sind.</para>
|
||||
</sect2>
|
||||
6023717e | Moritz Bunkus | |||
3adb0cb7 | Moritz Bunkus | <sect2 id="features.periodic-invoices.configuration"
|
||
xreflabel="Konfiguration von wiederkehrenden Rechnungen">
|
||||
<title>Konfiguration</title>
|
||||
6023717e | Moritz Bunkus | |||
3adb0cb7 | Moritz Bunkus | <para>Um einen Auftrag für wiederkehrende Rechnung zu konfigurieren,
|
||
findet sich beim Bearbeiten des Auftrags ein neuer Knopf
|
||||
"Konfigurieren", der ein neues Fenster öffnet, in dem man die nötigen
|
||||
Parameter einstellen kann. Hinter dem Knopf wird außerdem noch
|
||||
angezeigt, ob der Auftrag als wiederkehrende Rechnung konfiguriert ist
|
||||
oder nicht.</para>
|
||||
6023717e | Moritz Bunkus | |||
3adb0cb7 | Moritz Bunkus | <para>Folgende Parameter kann man konfigurieren:</para>
|
||
6023717e | Moritz Bunkus | |||
3adb0cb7 | Moritz Bunkus | <variablelist>
|
||
<varlistentry>
|
||||
<term>Status</term>
|
||||
6023717e | Moritz Bunkus | |||
3adb0cb7 | Moritz Bunkus | <listitem>
|
||
<para>Bei aktiven Rechnungen wird automatisch eine Rechnung
|
||||
0e14ae06 | Andreas Zenklusen | erstellt, wenn die Periodizität erreicht ist (z.B. am Anfang
|
||
eines neuen Monats).</para>
|
||||
3adb0cb7 | Moritz Bunkus | |||
<para>Ist ein Auftrag nicht aktiv, so werden für ihn auch keine
|
||||
wiederkehrenden Rechnungen erzeugt. Stellt man nach längerer
|
||||
nicht-aktiver Zeit einen Auftrag wieder auf aktiv, wird beim
|
||||
nächsten Periodenwechsel für alle Perioden, seit der letzten
|
||||
aktiven Periode, jeweils eine Rechnung erstellt. Möchte man dies
|
||||
verhindern, muss man vorher das Startdatum neu setzen.</para>
|
||||
<para>Für gekündigte Aufträge werden nie mehr Rechnungen
|
||||
erstellt. Man kann sich diese Aufträge aber gesondert in den
|
||||
Berichten anzeigen lassen.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
6023717e | Moritz Bunkus | |||
3adb0cb7 | Moritz Bunkus | <varlistentry>
|
||
<term>Periodizität</term>
|
||||
6023717e | Moritz Bunkus | |||
3adb0cb7 | Moritz Bunkus | <listitem>
|
||
<para>Ob monatlich, quartalsweise oder jährlich auf neue
|
||||
Rechnungen überprüft werden soll. Für jede Periode seit dem
|
||||
Startdatum wird überprüft, ob für die Periode (beginnend immer
|
||||
mit dem ersten Tag der Periode) schon eine Rechnung erstellt
|
||||
wurde. Unter Umständen können bei einem Startdatum in der
|
||||
Vergangenheit gleich mehrere Rechnungen erstellt werden.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
6023717e | Moritz Bunkus | |||
3adb0cb7 | Moritz Bunkus | <varlistentry>
|
||
<term>Buchen auf</term>
|
||||
6023717e | Moritz Bunkus | |||
3adb0cb7 | Moritz Bunkus | <listitem>
|
||
<para>Das Forderungskonto, in der Regel "Forderungen aus
|
||||
Lieferungen und Leistungen". Das Gegenkonto ergibt sich aus den
|
||||
Buchungsgruppen der betreffenden Waren.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
6023717e | Moritz Bunkus | |||
3adb0cb7 | Moritz Bunkus | <varlistentry>
|
||
<term>Startdatum</term>
|
||||
6023717e | Moritz Bunkus | |||
3adb0cb7 | Moritz Bunkus | <listitem>
|
||
<para>ab welchem Datum auf Rechnungserstellung geprüft werden
|
||||
soll</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>Enddatum</term>
|
||||
<listitem>
|
||||
<para>ab wann keine Rechnungen mehr erstellt werden
|
||||
sollen</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>Automatische Verlängerung um x Monate</term>
|
||||
<listitem>
|
||||
<para>Sollen die wiederkehrenden Rechnungen bei Erreichen des
|
||||
eingetragenen Enddatums weiterhin erstellt werden, so kann man
|
||||
hier die Anzahl der Monate eingeben, um die das Enddatum
|
||||
automatisch nach hinten geschoben wird.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>Drucken</term>
|
||||
<listitem>
|
||||
<para>Sind Drucker konfiguriert, so kann man sich die erstellten
|
||||
Rechnungen auch gleich ausdrucken lassen.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
<para>Nach Erstellung der Rechnungen kann eine E-Mail mit
|
||||
Informationen zu den erstellten Rechnungen verschickt werden.
|
||||
Konfiguriert wird dies in der <link
|
||||
linkend="config.config-file.sections-parameters">Konfigurationsdatei</link>
|
||||
5fa26f9a | Moritz Bunkus | <filename>config/kivitendo.conf</filename> im Abschnitt
|
||
3adb0cb7 | Moritz Bunkus | <varname>[periodic_invoices]</varname>.</para>
|
||
</sect2>
|
||||
2bc66c62 | Moritz Bunkus | <sect2 id="features.periodic-invoices.variables">
|
||
<title>Spezielle Variablen</title>
|
||||
0e14ae06 | Andreas Zenklusen | <para>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 <literal><%variablenname%></literal>.</para>
|
||||
2bc66c62 | Moritz Bunkus | |||
0e14ae06 | Andreas Zenklusen | <para>Sofern es sich um eine Datumsvariable handelt, kann das
|
||
Ausgabeformat weiter bestimmt werden, indem an den Variablennamen
|
||||
Formatoptionen angehängt werden. Die Syntax sieht dabei wie folgt aus:
|
||||
<literal><%variablenname FORMAT=Formatinformation%></literal>.
|
||||
Die zur verfügung stehenden Formatinformationen werden unten genauer
|
||||
beschrieben.</para>
|
||||
b5240726 | Moritz Bunkus | |||
0e14ae06 | Andreas Zenklusen | <para>Diese Variablen können auch beim automatischen Versand der
|
||
erzeugten Rechnungen per E-Mail genutzt werden, indem sie in den
|
||||
Feldern für den Betreff oder die Nachricht verwendet werden.</para>
|
||||
02b714e7 | Moritz Bunkus | |||
0e14ae06 | Andreas Zenklusen | <para>Diese Variablen werden in den folgenden Elementen des Auftrags
|
||
ersetzt:</para>
|
||||
2bc66c62 | Moritz Bunkus | |||
<itemizedlist>
|
||||
0e14ae06 | Andreas Zenklusen | <listitem>
|
||
<para>Bemerkungen</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>Interne Bemerkungen</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>Vorgangsbezeichnung</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>In den Beschreibungs- und Langtextfeldern aller
|
||||
Positionen</para>
|
||||
</listitem>
|
||||
2bc66c62 | Moritz Bunkus | </itemizedlist>
|
||
<para>Die zur Verfügung stehenden Variablen sind die Folgenden:</para>
|
||||
<variablelist>
|
||||
<varlistentry>
|
||||
0e14ae06 | Andreas Zenklusen | <term><varname><%current_quarter%></varname>,
|
||
<varname><%previous_quarter%></varname>,
|
||||
<varname><%next_quarter%></varname></term>
|
||||
2bc66c62 | Moritz Bunkus | |||
<listitem>
|
||||
0e14ae06 | Andreas Zenklusen | <para>Aktuelles, vorheriges und nächstes Quartal als Zahl
|
||
zwischen <literal>1</literal> und <literal>4</literal>.</para>
|
||||
2bc66c62 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
0e14ae06 | Andreas Zenklusen | <term><varname><%current_month%></varname>,
|
||
<varname><%previous_month%></varname>,
|
||||
<varname><%next_month%></varname></term>
|
||||
2bc66c62 | Moritz Bunkus | |||
<listitem>
|
||||
0e14ae06 | Andreas Zenklusen | <para>Aktueller, vorheriger und nächster Monat als Zahl zwischen
|
||
<literal>1</literal> und <literal>12</literal>.</para>
|
||||
2bc66c62 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
0e14ae06 | Andreas Zenklusen | <term><varname><%current_month_long%></varname>,
|
||
<varname><%previous_month_long%></varname>,
|
||||
<varname><%next_month_long%></varname></term>
|
||||
2bc66c62 | Moritz Bunkus | |||
<listitem>
|
||||
0e14ae06 | Andreas Zenklusen | <para>Aktueller, vorheriger und nächster Monat als Name
|
||
(<literal>Januar</literal>, <literal>Februar</literal>
|
||||
etc.).</para>
|
||||
2bc66c62 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
0e14ae06 | Andreas Zenklusen | <term><varname><%current_year%></varname>,
|
||
<varname><%previous_year%></varname>,
|
||||
<varname><%next_year%></varname></term>
|
||||
2bc66c62 | Moritz Bunkus | |||
<listitem>
|
||||
0e14ae06 | Andreas Zenklusen | <para>Aktuelles, vorheriges und nächstes Jahr als vierstellige
|
||
Jahreszahl (<literal>2013</literal> etc.).</para>
|
||||
2bc66c62 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
0e14ae06 | Andreas Zenklusen | <term><varname><%period_start_date%></varname>,
|
||
<varname><%period_end_date%></varname></term>
|
||||
2bc66c62 | Moritz Bunkus | |||
<listitem>
|
||||
0e14ae06 | Andreas Zenklusen | <para>Formatiertes Datum des ersten und letzten Tages im
|
||
Abrechnungszeitraum (z.B. bei quartalsweiser Abrechnung und im
|
||||
ersten Quartal von 2013 wären dies der
|
||||
<literal>01.01.2013</literal> und
|
||||
<literal>31.03.2013</literal>).</para>
|
||||
2bc66c62 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
</variablelist>
|
||||
b5240726 | Moritz Bunkus | |||
0e14ae06 | Andreas Zenklusen | <para>Die invidiuellen Formatinformationen bestehen aus Paaren von
|
||
Prozentzeichen und einem Buchstaben, welche beide zusammen durch den
|
||||
dazugehörigen Wert ersetzt werden. So wird z.B. <literal>%Y</literal>
|
||||
durch das viertstellige Jahr ersetzt. Alle möglichen Platzhalter
|
||||
sind:</para>
|
||||
b5240726 | Moritz Bunkus | |||
<variablelist>
|
||||
0e14ae06 | Andreas Zenklusen | <varlistentry>
|
||
<term><varname>%a</varname></term>
|
||||
b5240726 | Moritz Bunkus | |||
0e14ae06 | Andreas Zenklusen | <listitem>
|
||
<para>Der abgekürzte Wochentagsname.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
b5240726 | Moritz Bunkus | |||
0e14ae06 | Andreas Zenklusen | <varlistentry>
|
||
<term><varname>%A</varname></term>
|
||||
b5240726 | Moritz Bunkus | |||
0e14ae06 | Andreas Zenklusen | <listitem>
|
||
<para>Der ausgeschriebene Wochentagsname.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
b5240726 | Moritz Bunkus | |||
0e14ae06 | Andreas Zenklusen | <varlistentry>
|
||
<term><varname>%b</varname></term>
|
||||
b5240726 | Moritz Bunkus | |||
0e14ae06 | Andreas Zenklusen | <listitem>
|
||
<para>Der abgekürzte Monatsname.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
b5240726 | Moritz Bunkus | |||
0e14ae06 | Andreas Zenklusen | <varlistentry>
|
||
<term><varname>%B</varname></term>
|
||||
b5240726 | Moritz Bunkus | |||
0e14ae06 | Andreas Zenklusen | <listitem>
|
||
<para>Der ausgeschriebene Monatsname.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
b5240726 | Moritz Bunkus | |||
0e14ae06 | Andreas Zenklusen | <varlistentry>
|
||
<term><varname>%C</varname></term>
|
||||
b5240726 | Moritz Bunkus | |||
0e14ae06 | Andreas Zenklusen | <listitem>
|
||
<para>Das Jahrhundert (Jahr/100) als eine zweistellige
|
||||
Zahl.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
b5240726 | Moritz Bunkus | |||
0e14ae06 | Andreas Zenklusen | <varlistentry>
|
||
<term><varname>%d</varname></term>
|
||||
b5240726 | Moritz Bunkus | |||
0e14ae06 | Andreas Zenklusen | <listitem>
|
||
<para>Der Monatstag als Zahl zwischen 01 und 31.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
b5240726 | Moritz Bunkus | |||
0e14ae06 | Andreas Zenklusen | <varlistentry>
|
||
<term><varname>%D</varname></term>
|
||||
b5240726 | Moritz Bunkus | |||
0e14ae06 | Andreas Zenklusen | <listitem>
|
||
<para>Entspricht %m/%d/%y (amerikanisches Datumsformat).</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
b5240726 | Moritz Bunkus | |||
0e14ae06 | Andreas Zenklusen | <varlistentry>
|
||
<term><varname>%e</varname></term>
|
||||
b5240726 | Moritz Bunkus | |||
0e14ae06 | Andreas Zenklusen | <listitem>
|
||
<para>Wie %d (Monatstag als Zahl zwischen 1 und 31), allerdings
|
||||
werden führende Nullen durch Leerzeichen ersetzt.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
b5240726 | Moritz Bunkus | |||
0e14ae06 | Andreas Zenklusen | <varlistentry>
|
||
<term><varname>%F</varname></term>
|
||||
b5240726 | Moritz Bunkus | |||
0e14ae06 | Andreas Zenklusen | <listitem>
|
||
<para>Entspricht %Y-%m-%d (das ISO-8601-Datumsformat).</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
b5240726 | Moritz Bunkus | |||
0e14ae06 | Andreas Zenklusen | <varlistentry>
|
||
<term><varname>%j</varname></term>
|
||||
b5240726 | Moritz Bunkus | |||
0e14ae06 | Andreas Zenklusen | <listitem>
|
||
<para>Der Tag im Jahr als Zahl zwischen 001 und 366
|
||||
inklusive.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
b5240726 | Moritz Bunkus | |||
0e14ae06 | Andreas Zenklusen | <varlistentry>
|
||
<term><varname>%m</varname></term>
|
||||
b5240726 | Moritz Bunkus | |||
0e14ae06 | Andreas Zenklusen | <listitem>
|
||
<para>Der Monat als Zahl zwischen 01 und 12 inklusive.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
b5240726 | Moritz Bunkus | |||
0e14ae06 | Andreas Zenklusen | <varlistentry>
|
||
<term><varname>%u</varname></term>
|
||||
b5240726 | Moritz Bunkus | |||
0e14ae06 | Andreas Zenklusen | <listitem>
|
||
<para>Der Wochentag als Zahl zwischen 1 und 7 inklusive, wobei
|
||||
die 1 dem Montag entspricht.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
b5240726 | Moritz Bunkus | |||
0e14ae06 | Andreas Zenklusen | <varlistentry>
|
||
<term><varname>%U</varname></term>
|
||||
b5240726 | Moritz Bunkus | |||
0e14ae06 | Andreas Zenklusen | <listitem>
|
||
<para>Die Wochennummer als Zahl zwischen 00 und 53 inklusive,
|
||||
wobei der erste Sonntag im Jahr das Startdatum von Woche 01
|
||||
ist.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
b5240726 | Moritz Bunkus | |||
0e14ae06 | Andreas Zenklusen | <varlistentry>
|
||
<term><varname>%V</varname></term>
|
||||
b5240726 | Moritz Bunkus | |||
0e14ae06 | Andreas Zenklusen | <listitem>
|
||
<para>Die ISO-8601:1988-Wochennummer als Zahl zwischen 01 und 53
|
||||
inklusive, wobei Woche 01 die erste Woche, von der mindestens
|
||||
vier Tage im Jahr liegen; Montag ist erster Tag der
|
||||
Woche.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
b5240726 | Moritz Bunkus | |||
0e14ae06 | Andreas Zenklusen | <varlistentry>
|
||
<term><varname>%w</varname></term>
|
||||
b5240726 | Moritz Bunkus | |||
0e14ae06 | Andreas Zenklusen | <listitem>
|
||
<para>Der Wochentag als Zahl zwischen 0 und 6 inklusive, wobei
|
||||
die 0 dem Sonntag entspricht.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
b5240726 | Moritz Bunkus | |||
0e14ae06 | Andreas Zenklusen | <varlistentry>
|
||
<term><varname>%W</varname></term>
|
||||
b5240726 | Moritz Bunkus | |||
0e14ae06 | Andreas Zenklusen | <listitem>
|
||
<para>Die Wochennummer als Zahl zwischen 00 und 53 inklusive,
|
||||
wobei der erste Montag im Jahr das Startdatum von Woche 01
|
||||
ist.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
b5240726 | Moritz Bunkus | |||
0e14ae06 | Andreas Zenklusen | <varlistentry>
|
||
<term><varname>%y</varname></term>
|
||||
b5240726 | Moritz Bunkus | |||
0e14ae06 | Andreas Zenklusen | <listitem>
|
||
<para>Das Jahr als zweistellige Zahl zwischen 00 und 99
|
||||
inklusive.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
b5240726 | Moritz Bunkus | |||
0e14ae06 | Andreas Zenklusen | <varlistentry>
|
||
<term><varname>%Y</varname></term>
|
||||
b5240726 | Moritz Bunkus | |||
0e14ae06 | Andreas Zenklusen | <listitem>
|
||
<para>Das Jahr als vierstellige Zahl.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
b5240726 | Moritz Bunkus | |||
0e14ae06 | Andreas Zenklusen | <varlistentry>
|
||
<term><varname>%%</varname></term>
|
||||
b5240726 | Moritz Bunkus | |||
0e14ae06 | Andreas Zenklusen | <listitem>
|
||
<para>Das Prozentzeichen selber.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
b5240726 | Moritz Bunkus | </variablelist>
|
||
0e14ae06 | Andreas Zenklusen | <para>Anwendungsbeispiel für die Ausgabe, von welchem Monat und Jahr
|
||
bis zu welchem Monat und Jahr die aktuelle Abrechnungsperiode dauert:
|
||||
<literal>Abrechnungszeitrum: <%period_start_date FORMAT=%m/%Y%>
|
||||
bis <%period_end_date FORMAT=%m/%Y%></literal></para>
|
||||
2bc66c62 | Moritz Bunkus | </sect2>
|
||
3adb0cb7 | Moritz Bunkus | <sect2 id="features.periodic-invoices.reports">
|
||
<title>Auflisten</title>
|
||||
<para>Unter Verkauf->Berichte->Aufträge finden sich zwei neue
|
||||
Checkboxen, "Wiederkehrende Rechnungen aktiv" und "Wiederkehrende
|
||||
Rechnungen inaktiv", mit denen man sich einen Überglick über die
|
||||
wiederkehrenden Rechnungen verschaffen kann.</para>
|
||||
</sect2>
|
||||
<sect2 id="features.periodic-invoices.task-server">
|
||||
<title>Erzeugung der eigentlichen Rechnungen</title>
|
||||
<para>Die zeitliche und periodische Überprüfung, ob eine
|
||||
wiederkehrende Rechnung automatisch erstellt werden soll, geschieht
|
||||
durch den <link linkend="config.task-server">Taskserver</link>, einen
|
||||
externen Dienst, der automatisch beim Start des Servers gestartet
|
||||
werden sollte.</para>
|
||||
</sect2>
|
||||
<sect2 id="features.periodic-invoices.create-for-current-month">
|
||||
<title>Erste Rechnung für aktuellen Monat erstellen</title>
|
||||
<para>Will man im laufenden Monat eine monatlich wiederkehrende
|
||||
Rechnung inkl. des laufenden Monats starten, stellt man das Startdatum
|
||||
auf den Monatsanfang und wartet ein paar Minuten, bis der Taskserver
|
||||
den neu konfigurieren Auftrag erkennt und daraus eine Rechnung
|
||||
generiert hat. Alternativ setzt man das Startdatum auf den
|
||||
Monatsersten des Folgemonats und erstellt die erste Rechnung direkt
|
||||
manuell über den Workflow.</para>
|
||||
</sect2>
|
||||
6023717e | Moritz Bunkus | </sect1>
|
||
0e14ae06 | Andreas Zenklusen | |||
<sect1 id="features.bank" xreflabel="bankerweiterung">
|
||||
cb484787 | Geoffrey Richardson | <title>Bankerweiterung</title>
|
||
<sect2 id="features.bank.introduction"
|
||||
xreflabel="Einführung in die Bankerweiterung">
|
||||
<title>Einführung</title>
|
||||
0e14ae06 | Andreas Zenklusen | <para>Die Beschreibung der Bankerweiterung befindet sich derzeit noch
|
||
im Wiki und soll von dort später hierhin übernommen werden:</para>
|
||||
cb484787 | Geoffrey Richardson | |||
<para><ulink
|
||||
url="http://redmine.kivitendo-premium.de/projects/forum/wiki/Bankerweiterung">http://redmine.kivitendo-premium.de/projects/forum/wiki/Bankerweiterung</ulink></para>
|
||||
</sect2>
|
||||
</sect1>
|
||||
0e14ae06 | Andreas Zenklusen | |||
cb484787 | Geoffrey Richardson | <sect1 id="dokumentenvorlagen-und-variablen">
|
||
90baed86 | Moritz Bunkus | <title>Dokumentenvorlagen und verfügbare Variablen</title>
|
||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <sect2 id="dokumentenvorlagen-und-variablen.einführung">
|
||
<title>Einführung</title>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <para>Dies ist eine Auflistung der Standard-Dokumentenvorlagen und
|
||
aller zur Bearbeitung verfügbaren Variablen. Eine Variable wird in
|
||||
einer Vorlage durch ihren Inhalt ersetzt, wenn sie in der Form
|
||||
<function><%variablenname%></function> verwendet wird. Für
|
||||
LaTeX- und HTML-Vorlagen kann man die Form dieser Tags auch verändern
|
||||
(siehe <xref
|
||||
0e14ae06 | Andreas Zenklusen | linkend="dokumentenvorlagen-und-variablen.tag-style"/>).</para>
|
||
7ee506b3 | Moritz Bunkus | |||
5ad10035 | Moritz Bunkus | <para>kivitendo unterstützt LaTeX-, HTML- und OpenDocument-Vorlagen.
|
||
Sofern es nicht ausdrücklich eingeschränkt wird, gilt das im
|
||||
2e917eea | Andreas Rudin | Folgenden gesagte für alle Vorlagenarten.</para>
|
||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <para>Insgesamt sind technisch gesehen eine ganze Menge mehr Variablen
|
||
verfügbar als hier aufgelistet werden. Die meisten davon können
|
||||
allerdings innerhalb einer solchen Vorlage nicht sinnvoll verwendet
|
||||
werden. Wenn eine Auflistung dieser Variablen gewollt ist, so kann
|
||||
diese wie folgt erhalten werden:</para>
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para><filename>SL/Form.pm</filename> öffnen und am Anfang die
|
||||
Zeile "<command>use Data::Dumper;</command>" einfügen.</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>In <filename>Form.pm</filename> die Funktion
|
||||
<function>parse_template</function> suchen und hier die Zeile
|
||||
<command>print(STDERR Dumper($self));</command> einfügen.</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>Einmal per Browser die gewünschte Vorlage "benutzen", z.B.
|
||||
ein PDF für eine Rechnung erzeugen.</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>Im <filename>error.log</filename> Apache steht die Ausgabe
|
||||
der Variablen <varname>$self</varname> in der Form <varname>'key'
|
||||
=> 'value',</varname>. Alle <varname>key</varname>s sind
|
||||
verfügbar.</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
</sect2>
|
||||
<sect2 id="dokumentenvorlagen-und-variablen.variablen-ausgeben">
|
||||
<title>Variablen ausgeben</title>
|
||||
<para>Um eine Variable auszugeben, müssen sie einfach nur zwischen die
|
||||
Tags geschrieben werden, also z.B.
|
||||
<varname><%variablenname%></varname>.</para>
|
||||
<para>Optional kann man auch mit Leerzeichen getrennte Flags angeben,
|
||||
die man aber nur selten brauchen wird. Die Syntax sieht also so aus:
|
||||
<varname><%variablenname FLAG1 FLAG2%></varname>. Momentan
|
||||
werden die folgenden Flags unterstützt:</para>
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para><option>NOFORMAT</option> gilt nur für Zahlenwerte und gibt
|
||||
den Wert ohne Formatierung, also ohne Tausendertrennzeichen mit
|
||||
mit einem Punkt als Dezimaltrennzeichen aus. Nützlich z.B., wenn
|
||||
damit in der Vorlage z.B. von LaTeX gerechnet werden soll.</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para><option>NOESCAPE</option> unterdrückt das Escapen von
|
||||
Sonderzeichen für die Vorlagensprache. Wenn also in einer
|
||||
Variablen bereits gültiger LaTeX-Code steht und dieser von LaTeX
|
||||
auch ausgewertet und nicht wortwörtlich angezeigt werden soll, so
|
||||
ist dieses Flag sinnvoll.</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
<para>Beispiel:</para>
|
||||
<programlisting><%quototal NOFORMAT%></programlisting>
|
||||
</sect2>
|
||||
<sect2 id="dokumentenvorlagen-und-variablen.verwendung-in-druckbefehlen">
|
||||
<title>Verwendung in Druckbefehlen</title>
|
||||
<para>In der Admininstration können Drucker definiert werden. Auch im
|
||||
dort eingebbaren Druckbefehl können die hier aufgelisteten Variablen
|
||||
und Kontrollstrukturen verwendet werden. Ihr Inhalt wird dabei nach
|
||||
den Regeln der gängigen Shells formatiert, sodass Sonderzeichen wie
|
||||
<function>`...`</function> nicht zu unerwünschtem Verhalten
|
||||
führen.</para>
|
||||
<para>Dies erlaubt z.B. die Definition eines Faxes als Druckerbefehl,
|
||||
für das die Telefonnummer eines Ansprechpartners als Teil der
|
||||
Kommandozeile verwendet wird. Für ein fiktives Kommando könnte das
|
||||
z.B. wie folgt aussehen:</para>
|
||||
<programlisting>send_fax --number <%if cp_phone2%><%cp_phone2%><%else%><%cp_phone1%><%end%></programlisting>
|
||||
</sect2>
|
||||
<sect2 id="dokumentenvorlagen-und-variablen.tag-style"
|
||||
xreflabel="Anfang und Ende der Tags verändern">
|
||||
<title>Anfang und Ende der Tags verändern</title>
|
||||
<para>Der Standardstil für Tags sieht vor, dass ein Tag mit dem
|
||||
Kleinerzeichen und einem Prozentzeichen beginnt und mit dem
|
||||
Prozentzeichen und dem Größerzeichen endet, beispielsweise
|
||||
<function><%customer%></function>. Da diese Form aber z.B. in
|
||||
LaTeX zu Problemen führen kann, weil das Prozentzeichen dort
|
||||
Kommentare einleitet, kann pro HTML- oder LaTeX-Dokumentenvorlage der
|
||||
Stil umgestellt werden.</para>
|
||||
<para>Dazu werden in die Datei Zeilen geschrieben, die mit dem für das
|
||||
Format gültigen Kommentarzeichen anfangen, dann
|
||||
<function>config:</function> enthalten, die entsprechende Option
|
||||
setzen und bei HTML-Dokumentenvorlagen mit dem Kommentarendzeichen
|
||||
enden. Beispiel für LaTeX:</para>
|
||||
<programlisting>% config: tag-style=($ $)</programlisting>
|
||||
5fa26f9a | Moritz Bunkus | <para>Dies würde kivitendo dazu veranlassen, Variablen zu ersetzen,
|
||
90baed86 | Moritz Bunkus | wenn sie wie folgt aussehen: <function>($customer$)</function>. Das
|
||
äquivalente Beispiel für HTML-Dokumentenvorlagen sieht so aus:</para>
|
||||
<programlisting><!-- config: tag-style=($ $) --></programlisting>
|
||||
</sect2>
|
||||
<sect2 id="dokumentenvorlagen-und-variablen.zuordnung-dateinamen">
|
||||
<title>Zuordnung von den Dateinamen zu den Funktionen</title>
|
||||
<para>Diese folgende kurze Auflistung zeigt, welche Vorlage bei
|
||||
welcher Funktion ausgelesen wird. Dabei ist die Dateiendung
|
||||
"<filename>.ext</filename>" geeignet zu ersetzen:
|
||||
"<filename>.tex</filename>" für LaTeX-Vorlagen und
|
||||
"<filename>.odt</filename>" für OpenDocument-Vorlagen.</para>
|
||||
7ee506b3 | Moritz Bunkus | |||
<variablelist>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><filename>bin_list.ext</filename></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Lagerliste</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><filename>check.ext</filename></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>?</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><filename>invoice.ext</filename></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Rechnung</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><filename>packing_list.ext</filename></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Packliste</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><filename>pick_list.ext</filename></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Sammelliste</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><filename>purchase_delivery_order.ext</filename></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Lieferschein (Einkauf)</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><filename>purcharse_order.ext</filename></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Bestellung an Lieferanten</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
90baed86 | Moritz Bunkus | <varlistentry>
|
||
<term><filename>request_quotation.ext</filename></term>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <listitem>
|
||
<para>Anfrage an Lieferanten</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <varlistentry>
|
||
<term><filename>sales_delivery_order.ext</filename></term>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <listitem>
|
||
<para>Lieferschein (Verkauf)</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <varlistentry>
|
||
<term><filename>sales_order.ext</filename></term>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <listitem>
|
||
<para>Bestellung</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <varlistentry>
|
||
<term><filename>sales_quotation.ext</filename></term>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <listitem>
|
||
<para>Angebot an Kunden</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <varlistentry>
|
||
<term><filename>zahlungserinnerung.ext</filename></term>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <listitem>
|
||
<para>Mahnung (Dateiname im Programm konfigurierbar)</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <varlistentry>
|
||
<term><filename>zahlungserinnerung_invoice.ext</filename></term>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <listitem>
|
||
<para>Rechnung über Mahngebühren (Dateiname im Programm
|
||||
konfigurierbar)</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
</sect2>
|
||||
<sect2 id="dokumentenvorlagen-und-variablen.dateinamen-erweitert">
|
||||
<title>Sprache, Drucker und E-Mail</title>
|
||||
<para>Angeforderte Sprache und Druckerkürzel in den Dateinamen mit
|
||||
eingearbeitet. So wird aus der Vorlage
|
||||
<filename>sales_order.ext</filename> bei Sprache
|
||||
<function>de</function> und Druckerkürzel <function>lpr2</function>
|
||||
der Vorlagenname <filename>sales_order_de_lpr2.ext</filename>.
|
||||
Zusätzlich können für E-Mails andere Vorlagen erstellt werden, diese
|
||||
bekommen dann noch das Kürzel <filename>_email</filename>, der
|
||||
vollständige Vorlagenname wäre dann
|
||||
<filename>sales_order_email_de_lpr2.ext</filename>. In allen Fällen
|
||||
kann eine Standarddatei <filename>default.ext</filename> hinterlegt
|
||||
werden. Diese wird verwendet, wenn keine der anderen Varianten
|
||||
gefunden wird.</para>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <para>Die vollständige Suchreihenfolge für einen Verkaufsauftrag mit
|
||
der Sprache "de" und dem Drucker "lpr2", der per E-Mail im Format PDF
|
||||
verschickt wird, ist:</para>
|
||||
<orderedlist>
|
||||
7ee506b3 | Moritz Bunkus | <listitem>
|
||
90baed86 | Moritz Bunkus | <para><filename>sales_order_email_de_lpr2.tex</filename></para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para><filename>sales_order_de_lpr2.tex</filename></para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para><filename>sales_order.tex</filename></para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para><filename>default.tex</filename></para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
90baed86 | Moritz Bunkus | </orderedlist>
|
||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <para>Die kurzen Varianten dieser Vorlagentitel müssen dann entweder
|
||
Standardwerte anzeigen, oder die angeforderten Werte selbst auswerten,
|
||||
siehe dazu <xref
|
||||
0e14ae06 | Andreas Zenklusen | linkend="dokumentenvorlagen-und-variablen.allgemeine-variablen.meta"/>.</para>
|
||
90baed86 | Moritz Bunkus | </sect2>
|
||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <sect2 id="dokumentenvorlagen-und-variablen.allgemeine-variablen">
|
||
<title>Allgemeine Variablen, die in allen Vorlagen vorhanden
|
||||
sind</title>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <sect3 id="dokumentenvorlagen-und-variablen.allgemeine-variablen.meta"
|
||
xreflabel="Metainformationen zur angeforderten Vorlage">
|
||||
<title>Metainformationen zur angeforderten Vorlage</title>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <para>Diese Variablen liefern Informationen darüber welche Variante
|
||
einer Vorlage der Benutzer angefragt hat. Sie sind nützlich für
|
||||
Vorlagenautoren, die aus einer zentralen Layoutvorlage die einzelnen
|
||||
Formulare einbinden möchten.</para>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <variablelist>
|
||
<varlistentry>
|
||||
<term><varname>template_meta.formname</varname></term>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <listitem>
|
||
<para>Basisname der Vorlage. Identisch mit der <link
|
||||
linkend="dokumentenvorlagen-und-variablen.zuordnung-dateinamen">Zurordnung
|
||||
zu den Dateinamen</link> ohne die Erweiterung. Ein
|
||||
Verkaufsauftrag enthält hier
|
||||
<constant>sales_order</constant>.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <varlistentry>
|
||
<term><varname>template_meta.language.description</varname></term>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <listitem>
|
||
<para>Beschreibung der verwendeten Sprache</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <varlistentry>
|
||
<term><varname>template_meta.language.template_code</varname></term>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <listitem>
|
||
0e14ae06 | Andreas Zenklusen | <para>Vorlagenkürzel der verwendeten Sprache, identisch mit
|
||
dem Kürzel das im Dateinamen verwendetet wird.</para>
|
||||
90baed86 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <varlistentry>
|
||
<term><varname>template_meta.language.output_numberformat</varname></term>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <listitem>
|
||
<para>Zahlenformat der verwendeten Sprache in der Form
|
||||
"<constant>1.000,00</constant>". Experimentell! Nur
|
||||
interessant für Vorlagen die mit unformatierten Werten
|
||||
arbeiten.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <varlistentry>
|
||
<term><varname>template_meta.language.output_dateformat</varname></term>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <listitem>
|
||
<para>Datumsformat der verwendeten Sprache in der Form
|
||||
"<constant>dd.mm.yyyy</constant>". Experimentell! Nur
|
||||
interessant für Vorlagen die mit unformatierten Werten
|
||||
arbeiten.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <varlistentry>
|
||
<term><varname>template_meta.format</varname></term>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <listitem>
|
||
<para>Das angeforderte Format. Kann im Moment die Werte
|
||||
<constant>pdf</constant>, <constant>postscript</constant>,
|
||||
<constant>html</constant>, <constant>opendocument</constant>,
|
||||
<constant>opendocument_pdf</constant> und
|
||||
<constant>excel</constant> enthalten.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <varlistentry>
|
||
<term><varname>template_meta.extension</varname></term>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <listitem>
|
||
<para>Dateierweiterung, wie im Dateinamen. Wird aus
|
||||
<constant>format</constant> entschieden.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <varlistentry>
|
||
<term><varname>template_meta.media</varname></term>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <listitem>
|
||
<para>Ausgabemedium. Kann zur Zeit die Werte
|
||||
<constant>screen</constant> für Bildschirm,
|
||||
8aecfa7c | Geoffrey Richardson | <constant>email</constant> für E-Mail (triggert das
|
||
90baed86 | Moritz Bunkus | <constant>_email</constant> Kürzel im Dateinamen),
|
||
<constant>printer</constant> für Drucker, und
|
||||
<constant>queue</constant> für Warteschlange enthalten.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <varlistentry>
|
||
<term><varname>template_meta.printer.description</varname></term>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <listitem>
|
||
<para>Beschreibung des ausgewählten Druckers</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <varlistentry>
|
||
<term><varname>template_meta.printer.template_code</varname></term>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <listitem>
|
||
<para>Vorlagenürzel des ausgewählten Druckers, identisch mit
|
||||
dem Kürzel das im Dateinamen verwendetet wird.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
d7acc048 | Wulf Coulmann | |||
<varlistentry>
|
||||
<term><varname>template_meta.tmpfile</varname></term>
|
||||
<listitem>
|
||||
<para>Datei-Prefix für temporäre Dateien.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
90baed86 | Moritz Bunkus | </variablelist>
|
||
7ee506b3 | Moritz Bunkus | </sect3>
|
||
90baed86 | Moritz Bunkus | <sect3 id="dokumentenvorlagen-und-variablen.allgemeine-variablen.kunden-lieferanten">
|
||
<title>Stammdaten von Kunden und Lieferanten</title>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <variablelist>
|
||
<varlistentry>
|
||||
<term><varname>account_number</varname></term>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <listitem>
|
||
<para>Kontonummer</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <varlistentry>
|
||
<term><varname>bank</varname></term>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <listitem>
|
||
<para>Name der Bank</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <varlistentry>
|
||
<term><varname>bank_code</varname></term>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <listitem>
|
||
<para>Bankleitzahl</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <varlistentry>
|
||
<term><varname>bic</varname></term>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <listitem>
|
||
<para>Bank-Identifikations-Code (Bank Identifier Code,
|
||||
BIC)</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <varlistentry>
|
||
<term><varname>business</varname></term>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <listitem>
|
||
<para>Kunden-/Lieferantentyp</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <varlistentry>
|
||
<term><varname>city</varname></term>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <listitem>
|
||
<para>Stadt</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <varlistentry>
|
||
<term><varname>contact</varname></term>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <listitem>
|
||
<para>Kontakt</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <varlistentry>
|
||
<term><varname>country</varname></term>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <listitem>
|
||
<para>Land</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
7ee506b3 | Moritz Bunkus | |||
512bdfe4 | Wulf Coulmann | <varlistentry>
|
||
<term><varname>c_vendor_id</varname></term>
|
||||
<listitem>
|
||||
<para>Lieferantennummer beim Kunden (nur Kunden)</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><varname>v_customer_id</varname></term>
|
||||
<listitem>
|
||||
<para>Kundennummer beim Lieferanten (nur Lieferanten)</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
90baed86 | Moritz Bunkus | <varlistentry>
|
||
<term><varname>cp_email</varname></term>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <listitem>
|
||
<para>Email des Ansprechpartners</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <varlistentry>
|
||
<term><varname>cp_givenname</varname></term>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <listitem>
|
||
<para>Vorname des Ansprechpartners</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <varlistentry>
|
||
<term><varname>cp_greeting</varname></term>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <listitem>
|
||
<para>Anrede des Ansprechpartners</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <varlistentry>
|
||
<term><varname>cp_name</varname></term>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <listitem>
|
||
<para>Name des Ansprechpartners</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <varlistentry>
|
||
<term><varname>cp_phone1</varname></term>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <listitem>
|
||
<para>Telefonnummer 1 des Ansprechpartners</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <varlistentry>
|
||
<term><varname>cp_phone2</varname></term>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <listitem>
|
||
<para>Telefonnummer 2 des Ansprechpartners</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <varlistentry>
|
||
<term><varname>cp_title</varname></term>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <listitem>
|
||
<para>Titel des Ansprechpartners</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <varlistentry>
|
||
<term><varname>creditlimit</varname></term>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <listitem>
|
||
<para>Kreditlimit</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <varlistentry>
|
||
<term><varname>customeremail</varname></term>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <listitem>
|
||
<para>Email des Kunden; nur für Kunden</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <varlistentry>
|
||
<term><varname>customerfax</varname></term>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <listitem>
|
||
<para>Faxnummer des Kunden; nur für Kunden</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <varlistentry>
|
||
<term><varname>customernotes</varname></term>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <listitem>
|
||
<para>Bemerkungen beim Kunden; nur für Kunden</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
7ee506b3 | Moritz Bunkus | |||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>customernumber</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Kundennummer; nur für Kunden</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>customerphone</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Telefonnummer des Kunden; nur für Kunden</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>discount</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Rabatt</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>email</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Emailadresse</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>fax</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Faxnummer</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
33d7f4d7 | Bernd Bleßmann | <varlistentry>
|
||
<term><varname>gln</varname></term>
|
||||
<listitem>
|
||||
<para>GLN (Globale Lokationsnummer)</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
24d49c4b | Geoffrey Richardson | <varlistentry>
|
||
<term><varname>greeting</varname></term>
|
||||
<listitem>
|
||||
<para>Anrede</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
7ee506b3 | Moritz Bunkus | <varlistentry>
|
||
90baed86 | Moritz Bunkus | <term><varname>homepage</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Homepage</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>iban</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Internationale Kontonummer (International Bank Account
|
||
Number, IBAN)</para>
|
||||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>language</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Sprache</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>name</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Firmenname</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>payment_description</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Name der Zahlart</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>payment_terms</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Zahlungskonditionen</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>phone</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Telefonnummer</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>shiptocity</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Stadt (Lieferadresse) <link
|
||
linkend="dokumentenvorlagen-und-variablen.anmerkung-shipto">*</link></para>
|
||||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>shiptocontact</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Kontakt (Lieferadresse) <link
|
||
linkend="dokumentenvorlagen-und-variablen.anmerkung-shipto">*</link></para>
|
||||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>shiptocountry</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Land (Lieferadresse) <link
|
||
linkend="dokumentenvorlagen-und-variablen.anmerkung-shipto">*</link></para>
|
||||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
456884ef | Moritz Bunkus | <term><varname>shiptodepartment_1</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Abteilung 1 (Lieferadresse) <link
|
||
linkend="dokumentenvorlagen-und-variablen.anmerkung-shipto">*</link></para>
|
||||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
456884ef | Moritz Bunkus | <term><varname>shiptodepartment_2</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Abteilung 2 (Lieferadresse) <link
|
||
linkend="dokumentenvorlagen-und-variablen.anmerkung-shipto">*</link></para>
|
||||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>shiptoemail</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Email (Lieferadresse) <link
|
||
linkend="dokumentenvorlagen-und-variablen.anmerkung-shipto">*</link></para>
|
||||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>shiptofax</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Fax (Lieferadresse) <link
|
||
linkend="dokumentenvorlagen-und-variablen.anmerkung-shipto">*</link></para>
|
||||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
33d7f4d7 | Bernd Bleßmann | <varlistentry>
|
||
<term><varname>shiptogln</varname></term>
|
||||
<listitem>
|
||||
<para>GLN (Globale Lokationsnummer) (Lieferadresse) <link
|
||||
linkend="dokumentenvorlagen-und-variablen.anmerkung-shipto">*</link></para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
7ee506b3 | Moritz Bunkus | <varlistentry>
|
||
90baed86 | Moritz Bunkus | <term><varname>shiptoname</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Firmenname (Lieferadresse) <link
|
||
linkend="dokumentenvorlagen-und-variablen.anmerkung-shipto">*</link></para>
|
||||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>shiptophone</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Telefonnummer (Lieferadresse) <link
|
||
linkend="dokumentenvorlagen-und-variablen.anmerkung-shipto">*</link></para>
|
||||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>shiptostreet</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Straße und Hausnummer (Lieferadresse) <link
|
||
linkend="dokumentenvorlagen-und-variablen.anmerkung-shipto">*</link></para>
|
||||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>shiptozipcode</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Postleitzahl (Lieferadresse) <link
|
||
linkend="dokumentenvorlagen-und-variablen.anmerkung-shipto">*</link></para>
|
||||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>street</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Straße und Hausnummer</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>taxnumber</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Steuernummer</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>ustid</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Umsatzsteuer-Identifikationsnummer</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>vendoremail</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Email des Lieferanten; nur für Lieferanten</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>vendorfax</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Faxnummer des Lieferanten; nur für Lieferanten</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>vendornotes</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Bemerkungen beim Lieferanten; nur für Lieferanten</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>vendornumber</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Lieferantennummer; nur für Lieferanten</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>vendorphone</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Telefonnummer des Lieferanten; nur für
|
||
Lieferanten</para>
|
||||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>zipcode</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Postleitzahl</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
90baed86 | Moritz Bunkus | </variablelist>
|
||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <note id="dokumentenvorlagen-und-variablen.anmerkung-shipto">
|
||
<para>Anmerkung: Sind die <varname>shipto*</varname>-Felder in den
|
||||
Stammdaten nicht eingetragen, so haben die Variablen
|
||||
<varname>shipto*</varname> den gleichen Wert wie die die
|
||||
entsprechenden Variablen der Lieferdaten. Das bedeutet, dass sich
|
||||
einige <varname>shipto*</varname>-Variablen so nicht in den
|
||||
Stammdaten wiederfinden sondern schlicht Kopien der
|
||||
Lieferdatenvariablen sind (z.B.
|
||||
<varname>shiptocontact</varname>).</para>
|
||||
</note>
|
||||
</sect3>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <sect3 id="dokumentenvorlagen-und-variablen.allgemein-bearbeiter">
|
||
<title>Informationen über den Bearbeiter</title>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <variablelist>
|
||
7ee506b3 | Moritz Bunkus | <varlistentry>
|
||
90baed86 | Moritz Bunkus | <term><varname>employee_address</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Adressfeld</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>employee_businessnumber</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Firmennummer</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>employee_company</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Firmenname</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>employee_co_ustid</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Usatzsteuer-Identifikationsnummer</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>employee_duns</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>DUNS-Nummer</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>employee_email</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Email</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>employee_fax</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Fax</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>employee_name</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>voller Name</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>employee_signature</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Signatur</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>employee_taxnumber</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Steuernummer</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>employee_tel</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Telefonnummer</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
90baed86 | Moritz Bunkus | </variablelist>
|
||
</sect3>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <sect3 id="dokumentenvorlagen-und-variablen.allgemein-verkaeufer">
|
||
00a6b021 | Bernd Bleßmann | <title>Informationen über den Verkäufer</title>
|
||
90baed86 | Moritz Bunkus | |||
<variablelist>
|
||||
7ee506b3 | Moritz Bunkus | <varlistentry>
|
||
90baed86 | Moritz Bunkus | <term><varname>salesman_address</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Adressfeld</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>salesman_businessnumber</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Firmennummer</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>salesman_company</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Firmenname</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>salesman_co_ustid</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Usatzsteuer-Identifikationsnummer</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>salesman_duns</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>DUNS-Nummer</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>salesman_email</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Email</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>salesman_fax</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Fax</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>salesman_name</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>voller Name</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>salesman_signature</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Signatur</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>salesman_taxnumber</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
<para>Steuernummer</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>salesman_tel</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Telefonnummer</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
90baed86 | Moritz Bunkus | </variablelist>
|
||
</sect3>
|
||||
<sect3 id="dokumentenvorlagen-und-variablen.allgemein-steuern">
|
||||
<title>Variablen für die einzelnen Steuern</title>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <variablelist>
|
||
7ee506b3 | Moritz Bunkus | <varlistentry>
|
||
90baed86 | Moritz Bunkus | <term><varname>tax</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Steuer</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>taxbase</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>zu versteuernder Betrag</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>taxdescription</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Name der Steuer</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>taxrate</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Steuersatz</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
90baed86 | Moritz Bunkus | </variablelist>
|
||
</sect3>
|
||||
c53361bc | Bernd Bleßmann | |||
<sect3 id="dokumentenvorlagen-und-variablen.allgemein-lieferbedingungen">
|
||||
<title>Variablen für Lieferbedingungen</title>
|
||||
<variablelist>
|
||||
<varlistentry>
|
||||
<term><varname>delivery_term</varname></term>
|
||||
0e14ae06 | Andreas Zenklusen | |||
<listitem>
|
||||
<para>Datenbank-Objekt der Lieferbedingung</para>
|
||||
</listitem>
|
||||
c53361bc | Bernd Bleßmann | </varlistentry>
|
||
0e14ae06 | Andreas Zenklusen | |||
c53361bc | Bernd Bleßmann | <varlistentry>
|
||
<term><varname>delivery_term.description</varname></term>
|
||||
0e14ae06 | Andreas Zenklusen | |||
<listitem>
|
||||
<para>Beschreibung der Lieferbedingung</para>
|
||||
</listitem>
|
||||
c53361bc | Bernd Bleßmann | </varlistentry>
|
||
0e14ae06 | Andreas Zenklusen | |||
c53361bc | Bernd Bleßmann | <varlistentry>
|
||
903029f6 | Moritz Bunkus | <term><varname>delivery_term.description_long</varname></term>
|
||
0e14ae06 | Andreas Zenklusen | |||
<listitem>
|
||||
<para>Langtext bzw. übersetzter Langtext der
|
||||
Lieferbedingung</para>
|
||||
</listitem>
|
||||
c53361bc | Bernd Bleßmann | </varlistentry>
|
||
</variablelist>
|
||||
</sect3>
|
||||
90baed86 | Moritz Bunkus | </sect2>
|
||
<sect2 id="dokumentenvorlagen-und-variablen.invoice">
|
||||
<title>Variablen in Rechnungen</title>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <sect3 id="dokumentenvorlagen-und-variablen.invoice-allgemein">
|
||
<title>Allgemeine Variablen</title>
|
||||
<variablelist>
|
||||
7ee506b3 | Moritz Bunkus | <varlistentry>
|
||
90baed86 | Moritz Bunkus | <term><varname>creditremaining</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Verbleibender Kredit</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>currency</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Währung</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>cusordnumber</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Bestellnummer beim Kunden</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>deliverydate</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Lieferdatum</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>duedate</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Fälligkeitsdatum</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>globalprojectnumber</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Projektnummer des ganzen Beleges</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>globalprojectdescription</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Projekbeschreibung des ganzen Beleges</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>intnotes</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Interne Bemerkungen</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>invdate</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Rechnungsdatum</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>invnumber</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Rechnungsnummer</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>invtotal</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>gesamter Rechnungsbetrag</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>notes</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Bemerkungen der Rechnung</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>orddate</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Auftragsdatum</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>ordnumber</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Auftragsnummer, wenn die Rechnung aus einem Auftrag
|
||
erstellt wurde</para>
|
||||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>payment_description</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Name der Zahlart</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>payment_terms</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Zahlungskonditionen</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>quodate</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Angebotsdatum</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>quonumber</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Angebotsnummer</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
2e917eea | Andreas Rudin | <varlistentry>
|
||
<term><varname>rounding</varname></term>
|
||||
<listitem>
|
||||
5ad10035 | Moritz Bunkus | <para>Betrag, um den <varname>invtotal</varname> gerundet wurde
|
||
2e917eea | Andreas Rudin | (kann positiv oder negativ sein)</para>
|
||
</listitem>
|
||||
</varlistentry>
|
||||
5ad10035 | Moritz Bunkus | |||
7ee506b3 | Moritz Bunkus | <varlistentry>
|
||
90baed86 | Moritz Bunkus | <term><varname>shippingpoint</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Versandort</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>shipvia</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Transportmittel</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>subtotal</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Zwischensumme aller Posten ohne Steuern</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>total</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Restsumme der Rechnung (Summe abzüglich bereits
|
||
bezahlter Posten)</para>
|
||||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>transaction_description</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Vorgangsbezeichnung</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>transdate</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Auftragsdatum wenn die Rechnung aus einem Auftrag
|
||
erstellt wurde</para>
|
||||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
</variablelist>
|
||||
</sect3>
|
||||
90baed86 | Moritz Bunkus | <sect3 id="dokumentenvorlagen-und-variablen.invoice-posten">
|
||
<title>Variablen für jeden Posten auf der Rechnung</title>
|
||||
7ee506b3 | Moritz Bunkus | |||
<variablelist>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>bin</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Stellage</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>description</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Artikelbeschreibung</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
c1ec3f4f | Geoffrey Richardson | <varlistentry>
|
||
<term><varname>cusordnumber_oe</varname></term>
|
||||
<listitem>
|
||||
0e14ae06 | Andreas Zenklusen | <para>Bestellnummer des Kunden aus dem Auftrag, aus dem der
|
||
Posten ursprünglich stammt (nur Verkauf)</para>
|
||||
c1ec3f4f | Geoffrey Richardson | </listitem>
|
||
</varlistentry>
|
||||
7ee506b3 | Moritz Bunkus | <varlistentry>
|
||
90baed86 | Moritz Bunkus | <term><varname>discount</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Rabatt als Betrag</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>discount_sub</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Zwischensumme mit Rabatt</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
c1ec3f4f | Geoffrey Richardson | <varlistentry>
|
||
<term><varname>donumber_do</varname></term>
|
||||
<listitem>
|
||||
0e14ae06 | Andreas Zenklusen | <para>Lieferscheinnummer des Lieferscheins, aus dem die
|
||
Position ursprünglich stammt, wenn die Rechnung im Rahmen des
|
||||
Workflows aus einem Lieferschein erstellt wurde.</para>
|
||||
c1ec3f4f | Geoffrey Richardson | </listitem>
|
||
</varlistentry>
|
||||
7ee506b3 | Moritz Bunkus | <varlistentry>
|
||
90baed86 | Moritz Bunkus | <term><varname>drawing</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Zeichnung</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>ean</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>EAN-Code</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>image</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Grafik</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>linetotal</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Zeilensumme (Anzahl * Einzelpreis)</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>longdescription</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Langtext</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>microfiche</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Mikrofilm</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>netprice</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
0e14ae06 | Andreas Zenklusen | <para>Alternative zu <varname>sellprice</varname>, aber
|
||
<varname>netprice</varname> entspricht dem effektiven
|
||||
Einzelpreis und beinhaltet Zeilenrabatt und Preisfaktor.
|
||||
<varname>netprice</varname> wird rückgerechnet aus Zeilensumme
|
||||
/ Menge. Diese Variable ist nützlich, wenn man den gewährten
|
||||
Rabatt in der Druckvorlage nicht anzeigen möchte, aber Menge *
|
||||
Einzelpreis trotzdem die angezeigte Zeilensumme ergeben soll.
|
||||
<varname>netprice</varname> hat nichts mit Netto/Brutto im
|
||||
Sinne von Steuern zu tun.</para>
|
||||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>nodiscount_linetotal</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Zeilensumme ohne Rabatt</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>nodiscount_sub</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Zwischensumme ohne Rabatt</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>number</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Artikelnummer</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>ordnumber_oe</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
0e14ae06 | Andreas Zenklusen | <para>Auftragsnummer des Originalauftrags, aus dem der Posten
|
||
ursprünglich stammt. Nützlich, wenn die Rechnung aus mehreren
|
||||
Lieferscheinen zusammengefasst wurde, oder wenn zwischendurch
|
||||
eine Sammelauftrag aus mehreren Aufträgen erstellt wurde. In
|
||||
letzterem Fall wird die unsprüngliche Auftragsnummer
|
||||
angezeigt.</para>
|
||||
bb7e2e85 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
7ee506b3 | Moritz Bunkus | <varlistentry>
|
||
90baed86 | Moritz Bunkus | <term><varname>p_discount</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Rabatt in Prozent</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>partnotes</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Die beim Artikel gespeicherten Bemerkungen</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>partsgroup</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Warengruppe</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>price_factor</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Der Preisfaktor als Zahl, sofern einer eingestellt
|
||
ist</para>
|
||||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>price_factor_name</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Der Name des Preisfaktors, sofern einer eingestellt
|
||
ist</para>
|
||||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>projectnumber</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Projektnummer</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>projectdescription</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Projektbeschreibung</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>qty</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Anzahl</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>reqdate</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Lieferdatum</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>runningnumber</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Position auf der Rechnung (1, 2, 3...)</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>sellprice</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Verkaufspreis</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>serialnumber</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Seriennummer</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>tax_rate</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Steuersatz</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
c1ec3f4f | Geoffrey Richardson | <varlistentry>
|
||
<term><varname>transdate_do</varname></term>
|
||||
<listitem>
|
||||
0e14ae06 | Andreas Zenklusen | <para>Datum des Lieferscheins, wenn die Rechnung im Rahmen des
|
||
Workflows aus einem Lieferschein stammte.</para>
|
||||
c1ec3f4f | Geoffrey Richardson | </listitem>
|
||
</varlistentry>
|
||||
7ee506b3 | Moritz Bunkus | <varlistentry>
|
||
90baed86 | Moritz Bunkus | <term><varname>transdate_oe</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
0e14ae06 | Andreas Zenklusen | <para>Datum des Auftrags, wenn die Rechnung im Rahmen des
|
||
Workflows aus einem Auftrag erstellt wurde. Wenn es
|
||||
Sammelaufträge gab wird das Datum des ursprünglichen Auftrags
|
||||
genommen.</para>
|
||||
c1ec3f4f | Geoffrey Richardson | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><varname>transdate_quo</varname></term>
|
||||
<listitem>
|
||||
0e14ae06 | Andreas Zenklusen | <para>Datum des Angebots, wenn die Position im Rahmen des
|
||
Workflows aus einem Angebot stammte.</para>
|
||||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>unit</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Einheit</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>weight</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Gewicht</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
90baed86 | Moritz Bunkus | </variablelist>
|
||
<para>Für jeden Posten gibt es ein Unterarray mit den Informationen
|
||||
über Lieferanten und Lieferantenartikelnummer. Diese müssen mit
|
||||
einer <function>foreach</function>-Schleife ausgegeben werden, da
|
||||
für jeden Artikel mehrere Lieferanteninformationen hinterlegt sein
|
||||
können. Die Variablen dafür lauten:</para>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <variablelist>
|
||
7ee506b3 | Moritz Bunkus | <varlistentry>
|
||
90baed86 | Moritz Bunkus | <term><varname>make</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Lieferant</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>model</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Lieferantenartikelnummer</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
90baed86 | Moritz Bunkus | </variablelist>
|
||
</sect3>
|
||||
<sect3 id="dokumentenvorlagen-und-variablen.invoice-zahlungen">
|
||||
<title>Variablen für die einzelnen Zahlungseingänge</title>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <variablelist>
|
||
7ee506b3 | Moritz Bunkus | <varlistentry>
|
||
90baed86 | Moritz Bunkus | <term><varname>payment</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Betrag</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>paymentaccount</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Konto</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>paymentdate</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Datum</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>paymentmemo</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Memo</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>paymentsource</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Beleg</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
90baed86 | Moritz Bunkus | </variablelist>
|
||
</sect3>
|
||||
<sect3 id="dokumentenvorlagen-und-variablen.benutzerdefinierte-variablen-vc">
|
||||
<title>Benutzerdefinierte Kunden- und Lieferantenvariablen</title>
|
||||
<para>Die vom Benutzer definierten Variablen für Kunden und
|
||||
Lieferanten stehen beim Ausdruck von Einkaufs- und Verkaufsbelegen
|
||||
ebenfalls zur Verfügung. Ihre Namen setzen sich aus dem Präfix
|
||||
<varname>vc_cvar_</varname> und dem vom Benutzer festgelegten
|
||||
Variablennamen zusammen.</para>
|
||||
<para>Beispiel: Der Benutzer hat eine Variable namens
|
||||
<varname>number_of_employees</varname> definiert, die die Anzahl der
|
||||
Mitarbeiter des Unternehmens enthält. Diese Variable steht dann
|
||||
unter dem Namen <varname>vc_cvar_number_of_employees</varname> zur
|
||||
Verfügung.</para>
|
||||
c7241bf7 | Moritz Bunkus | |||
0e14ae06 | Andreas Zenklusen | <para>Die benutzerdefinierten Variablen der Lieferadressen stehen
|
||
unter einem ähnlichen Namensschema zur Verfügung. Hier lautet der
|
||||
Präfix <varname>shiptocvar_</varname>.</para>
|
||||
90baed86 | Moritz Bunkus | </sect3>
|
||
</sect2>
|
||||
<sect2 id="dokumentenvorlagen-und-variablen.dunning">
|
||||
<title>Variablen in Mahnungen und Rechnungen über Mahngebühren</title>
|
||||
<sect3 id="dokumentenvorlagen-und-variablen.dunning-vorlagennamen">
|
||||
<title>Namen der Vorlagen</title>
|
||||
<para>Die Namen der Vorlagen werden im System-Menü vom Benutzer
|
||||
eingegeben. Wird für ein Mahnlevel die Option zur automatischen
|
||||
Erstellung einer Rechnung über die Mahngebühren und Zinsen
|
||||
aktiviert, so wird der Name der Vorlage für diese Rechnung aus dem
|
||||
Vorlagenname für diese Mahnstufe mit dem Zusatz
|
||||
<constant>_invoice</constant> gebildet. Weiterhin werden die Kürzel
|
||||
für die ausgewählte Sprache und den ausgewählten Drucker
|
||||
angehängt.</para>
|
||||
</sect3>
|
||||
<sect3 id="dokumentenvorlagen-und-variablen.dunning-allgemein">
|
||||
<title>Allgemeine Variablen in Mahnungen</title>
|
||||
23d86027 | Jan Büren | <para>Die Variablen des Bearbeiters, bzw. Verkäufers stehen wie gewohnt als
|
||
<varname>employee_...</varname> bzw. <varname>salesman_...</varname> zur Verfügung.
|
||||
Werden mehrere Rechnungen in einer Mahnung zusammengefasst, so werden
|
||||
die Metadaten (Bearbeiter, Abteilung, etc) der ersten angemahnten Rechnung
|
||||
im Ausdruck genommen.</para>
|
||||
<para>Die Adressdaten des Kunden stehen als Variablen <varname>name</varname>,
|
||||
90baed86 | Moritz Bunkus | <varname>street</varname>, <varname>zipcode</varname>,
|
||
<varname>city</varname>, <varname>country</varname>,
|
||||
<varname>department_1</varname>, <varname>department_2</varname>,
|
||||
23d86027 | Jan Büren | und <varname>email</varname> zur Verfügung. Der Ansprechpartner <varname>cp_...</varname>
|
||
steht auch zu Verfügung, wird allerdings auch nur von der ersten angemahnten Rechnung (s.o.)
|
||||
genommen.</para>
|
||||
90baed86 | Moritz Bunkus | |||
<para>Weitere Variablen beinhalten:</para>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <variablelist>
|
||
7ee506b3 | Moritz Bunkus | <varlistentry>
|
||
90baed86 | Moritz Bunkus | <term><varname>dunning_date</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Datum der Mahnung</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>dunning_duedate</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Fälligkeitsdatum für diese Mahhnung</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>dunning_id</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Mahnungsnummer</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>fee</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
d6645bbd | Geoffrey Richardson | <para>Kumulative Mahngebühren</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>interest_rate</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Zinssatz per anno in Prozent</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>total_amount</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Gesamter noch zu zahlender Betrag als
|
||
<function>fee</function> + <function>total_interest</function>
|
||||
+ <function>total_open_amount</function></para>
|
||||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>total_interest</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Zinsen per anno über alle Rechnungen</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>total_open_amount</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Summe über alle offene Beträge der Rechnungen</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
90baed86 | Moritz Bunkus | </variablelist>
|
||
</sect3>
|
||||
<sect3 id="dokumentenvorlagen-und-variablen.dunning-details">
|
||||
<title>Variablen für jede gemahnte Rechnung in einer Mahnung</title>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <variablelist>
|
||
7ee506b3 | Moritz Bunkus | <varlistentry>
|
||
90baed86 | Moritz Bunkus | <term><varname>dn_amount</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Rechnungssumme (brutto)</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>dn_duedate</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Originales Fälligkeitsdatum der Rechnung</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>dn_dunning_date</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Datum der Mahnung</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>dn_dunning_duedate</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Fälligkeitsdatum der Mahnung</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>dn_fee</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Kummulative Mahngebühr</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>dn_interest</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Zinsen per anno für diese Rechnung</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>dn_invnumber</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Rechnungsnummer</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>dn_linetotal</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Noch zu zahlender Betrag (ergibt sich aus
|
||
<varname>dn_open_amount</varname> + <varname>dn_fee</varname>
|
||||
+ <varname>dn_interest</varname>)</para>
|
||||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>dn_netamount</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Rechnungssumme (netto)</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>dn_open_amount</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Offener Rechnungsbetrag</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>dn_ordnumber</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Bestellnummer</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>dn_transdate</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Rechnungsdatum</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>dn_curr</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Währung, in der die Rechnung erstellt wurde. (Die
|
||
Rechnungsbeträge sind aber immer in der Hauptwährung)</para>
|
||||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
</variablelist>
|
||||
90baed86 | Moritz Bunkus | </sect3>
|
||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <sect3 id="dokumentenvorlagen-und-variablen.dunning-invoice">
|
||
<title>Variablen in automatisch erzeugten Rechnungen über
|
||||
Mahngebühren</title>
|
||||
<para>Die Variablen des Verkäufers stehen wie gewohnt als
|
||||
<varname>employee_...</varname> zur Verfügung. Die Adressdaten des
|
||||
Kunden stehen als Variablen <varname>name</varname>,
|
||||
<varname>street</varname>, <varname>zipcode</varname>,
|
||||
<varname>city</varname>, <varname>country</varname>,
|
||||
<varname>department_1</varname>, <varname>department_2</varname>,
|
||||
und <varname>email</varname> zur Verfügung.</para>
|
||||
<para>Weitere Variablen beinhalten:</para>
|
||||
7ee506b3 | Moritz Bunkus | |||
<variablelist>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>duedate</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Fälligkeitsdatum der Rechnung</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>dunning_id</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Mahnungsnummer</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>fee</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Mahngebühren</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>interest</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Zinsen</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>invamount</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Rechnungssumme (ergibt sich aus <varname>fee</varname> +
|
||
<varname>interest</varname>)</para>
|
||||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>invdate</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Rechnungsdatum</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>invnumber</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Rechnungsnummer</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
</variablelist>
|
||||
</sect3>
|
||||
90baed86 | Moritz Bunkus | </sect2>
|
||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <sect2 id="dokumentenvorlagen-und-variablen.andere-vorlagen">
|
||
<title>Variablen in anderen Vorlagen</title>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <sect3>
|
||
<title>Einführung</title>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <para>Die Variablen in anderen Vorlagen sind ähnlich wie in der
|
||
Rechnung. Allerdings heißen die Variablen, die mit
|
||||
<varname>inv</varname> beginnen, jetzt anders. Bei den Angeboten
|
||||
fangen sie mit <varname>quo</varname> für "quotation" an:
|
||||
<varname>quodate</varname> für Angebotsdatum etc. Bei Bestellungen
|
||||
wiederum fangen sie mit <varname>ord</varname> für "order" an:
|
||||
<varname>ordnumber</varname> für Bestellnummer etc.</para>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <para>Manche Variablen sind in anderen Vorlagen hingegen gar nicht
|
||
vorhanden wie z.B. die für bereits verbuchte Zahlungseingänge. Dies
|
||||
sind Variablen, die vom Geschäftsablauf her in der entsprechenden
|
||||
Vorlage keine Bedeutung haben oder noch nicht belegt sein
|
||||
können.</para>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <para>Im Folgenden werden nur wichtige Unterschiede zu den Variablen
|
||
in Rechnungen aufgeführt.</para>
|
||||
7ee506b3 | Moritz Bunkus | </sect3>
|
||
90baed86 | Moritz Bunkus | <sect3 id="dokumentenvorlagen-und-variablen.andere-vorlagen-quotations">
|
||
<title>Angebote und Preisanfragen</title>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <variablelist>
|
||
<varlistentry>
|
||||
<term><varname>quonumber</varname></term>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <listitem>
|
||
<para>Angebots- bzw. Anfragenummer</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
7ee506b3 | Moritz Bunkus | |||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>reqdate</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Gültigkeitsdatum (bei Angeboten) bzw. Lieferdatum (bei
|
||
Preisanfragen)</para>
|
||||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>transdate</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Angebots- bzw. Anfragedatum</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
90baed86 | Moritz Bunkus | </variablelist>
|
||
</sect3>
|
||||
<sect3 id="dokumentenvorlagen-und-variablen.andere-vorlagen-orders">
|
||||
<title>Auftragsbestätigungen und Lieferantenaufträge</title>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <variablelist>
|
||
7ee506b3 | Moritz Bunkus | <varlistentry>
|
||
90baed86 | Moritz Bunkus | <term><varname>ordnumber</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Auftragsnummer</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>reqdate</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Lieferdatum</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>transdate</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Auftragsdatum</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
90baed86 | Moritz Bunkus | </variablelist>
|
||
</sect3>
|
||||
<sect3 id="dokumentenvorlagen-und-variablen.andere-vorlagen-delivery-orders">
|
||||
<title>Lieferscheine (Verkauf und Einkauf)</title>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <variablelist>
|
||
7ee506b3 | Moritz Bunkus | <varlistentry>
|
||
90baed86 | Moritz Bunkus | <term><varname>cusordnumber</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Bestellnummer des Kunden (im Verkauf) bzw. Bestellnummer
|
||
des Lieferanten (im Einkauf)</para>
|
||||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>donumber</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Lieferscheinnummer</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>transdate</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Lieferscheindatum</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
</variablelist>
|
||||
90baed86 | Moritz Bunkus | <para>Für jede Position eines Lieferscheines gibt es ein Unterarray
|
||
mit den Informationen darüber, von welchem Lager und Lagerplatz aus
|
||||
die Waren verschickt wurden (Verkaufslieferscheine) bzw. auf welchen
|
||||
Lagerplatz sie eingelagert wurden. Diese müssen mittels einer
|
||||
<function>foreach</function>-Schleife ausgegeben werden. Diese
|
||||
Variablen sind:</para>
|
||||
7ee506b3 | Moritz Bunkus | |||
<variablelist>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>si_bin</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Lagerplatz</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>si_chargenumber</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Chargennummer</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>si_bestbefore</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Mindesthaltbarkeit</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>si_number</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Artikelnummer</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>si_qty</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Anzahl bzw. Menge</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>si_runningnumber</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Positionsnummer (1, 2, 3 etc)</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>si_unit</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Einheit</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>si_warehouse</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Lager</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
90baed86 | Moritz Bunkus | </variablelist>
|
||
</sect3>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <sect3 id="dokumentenvorlagen-und-variablen.andere-vorlagen-statement">
|
||
<title>Variablen für Sammelrechnung</title>
|
||||
<variablelist>
|
||||
7ee506b3 | Moritz Bunkus | <varlistentry>
|
||
90baed86 | Moritz Bunkus | <term><varname>c0total</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Gesamtbetrag aller Rechnungen mit Fälligkeit < 30
|
||
Tage</para>
|
||||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>c30total</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Gesamtbetrag aller Rechnungen mit Fälligkeit >= 30
|
||
und < 60 Tage</para>
|
||||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>c60total</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Gesamtbetrag aller Rechnungen mit Fälligkeit >= 60
|
||
und < 90 Tage</para>
|
||||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>c90total</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Gesamtbetrag aller Rechnungen mit Fälligkeit >= 90
|
||
Tage</para>
|
||||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>total</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Gesamtbetrag aller Rechnungen</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
</variablelist>
|
||||
90baed86 | Moritz Bunkus | <para>Variablen für jede Rechnungsposition in Sammelrechnung:</para>
|
||
7ee506b3 | Moritz Bunkus | |||
<variablelist>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>invnumber</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Rechnungsnummer</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>invdate</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Rechnungsdatum</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>duedate</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Fälligkeitsdatum</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>amount</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Summe der Rechnung</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>open</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Noch offener Betrag der Rechnung</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>c0</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Noch offener Rechnungsbetrag mit Fälligkeit < 30
|
||
Tage</para>
|
||||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
<varlistentry>
|
||||
90baed86 | Moritz Bunkus | <term><varname>c30</varname></term>
|
||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>Noch offener Rechnungsbetrag mit Fälligkeit >= 30 und
|
||
< 60 Tage</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><varname>c60</varname></term>
|
||||
<listitem>
|
||||
<para>Noch offener Rechnungsbetrag mit Fälligkeit >= 60 und
|
||||
< 90 Tage</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><varname>c90</varname></term>
|
||||
<listitem>
|
||||
<para>Noch offener Rechnungsbetrag mit Fälligkeit >= 90
|
||||
Tage</para>
|
||||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
</variablelist>
|
||||
</sect3>
|
||||
</sect2>
|
||||
90baed86 | Moritz Bunkus | <sect2 id="dokumentenvorlagen-und-variablen.bloecke">
|
||
<title>Blöcke, bedingte Anweisungen und Schleifen</title>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <sect3 id="dokumentenvorlagen-und-variablen.bloecke.einfuehrung">
|
||
b0614efa | Geoffrey Richardson | <title>Einführung</title>
|
||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <para>Der Parser kennt neben den Variablen einige weitere
|
||
Konstrukte, die gesondert behandelt werden. Diese sind wie
|
||||
Variablennamen in spezieller Weise markiert:
|
||||
<command><%anweisung%> ... <%end%></command></para>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <para>Anmerkung zum <command><%end%></command>: Der besseren
|
||
Verständlichkeit halber kann man nach dem <command>end</command>
|
||||
noch beliebig weitere Wörter schreiben, um so zu markieren, welche
|
||||
Anweisung (z.B. <command>if</command> oder
|
||||
<command>foreach</command>) damit abgeschlossen wird.</para>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <para>Beispiel: Lautet der Beginn eines Blockes z.B.
|
||
<command><%if type == "sales_quotation"%></command>, so könnte
|
||||
er mit <command><%end%></command> genauso abgeschlossen werden
|
||||
wie mit <command><%end if%></command> oder auch
|
||||
<command><%end type == "sales_quotation"%></command>.</para>
|
||||
7ee506b3 | Moritz Bunkus | </sect3>
|
||
90baed86 | Moritz Bunkus | <sect3 id="dokumentenvorlagen-und-variablen.bloecke.if">
|
||
<title>Der if-Block</title>
|
||||
<programlisting><%if variablenname%>
|
||||
...
|
||||
<%end%></programlisting>
|
||||
<para>Eine normale "if-then"-Bedingung. Die Zeilen zwischen dem "if"
|
||||
und dem "end" werden nur ausgegeben, wenn die Variable
|
||||
<varname>variablenname</varname> gesetzt und ungleich 0 ist.</para>
|
||||
0e14ae06 | Andreas Zenklusen | <para>Handelt es sich bei der benannten Variable um ein Array, also
|
||
um einen Variablennamen, über den man mit <command><%foreach
|
||||
variablenname%></command> iteriert, so wird mit diesem Konstrukt
|
||||
darauf getestet, ob das Array Elemente enthält. Somit würde im
|
||||
folgenden Beispiel nur dann eine Liste von Zahlungseingängen samt
|
||||
ihrer Überschrift "Zahlungseingänge" ausgegeben, wenn tatsächlich
|
||||
welche getätigt wurden:</para>
|
||||
c0abdaa6 | Moritz Bunkus | |||
<programlisting><%if payment%>
|
||||
Zahlungseingänge:
|
||||
<%foreach payment%>
|
||||
Am <%paymentdate%>: <%payment%> €
|
||||
<%end foreach%>
|
||||
<%end if%></programlisting>
|
||||
90baed86 | Moritz Bunkus | <para>Die Bedingung kann auch negiert werden, indem das Wort
|
||
<function>not</function> nach dem <filename>if</filename> verwendet
|
||||
wird. Beispiel:</para>
|
||||
<programlisting><%if not cp_greeting%>
|
||||
...
|
||||
<%end%></programlisting>
|
||||
<para>Zusätzlich zu dem einfachen Test, ob eine Variable gesetzt ist
|
||||
oder nicht, bietet dieser Block auch die Möglichkeit, den Inhalt
|
||||
einer Variablen mit einer festen Zeichenkette oder einer anderen
|
||||
Variablen zu vergleichen. Ob der Vergleich mit einer Zeichenkette
|
||||
oder einer anderen Variablen vorgenommen wird, hängt davon ab, ob
|
||||
die rechte Seite des Vergleichsoperators in Anführungszeichen
|
||||
gesetzt wird (Vergleich mit Zeichenkette) oder nicht (Vergleich mit
|
||||
anderer Variablen). Zwei Beispiele, die beide Vergleiche
|
||||
zeigen:</para>
|
||||
<programlisting><%if var1 == "Wert"%></programlisting>
|
||||
<para>Testet die Variable <varname>var1</varname> auf
|
||||
übereinstimmung mit der Zeichenkette <constant>Wert</constant>.
|
||||
Mittels <function>!=</function> anstelle von <function>==</function>
|
||||
würde auf Ungleichheit getestet.</para>
|
||||
55036afc | Moritz Bunkus | <programlisting><%if var1 == var2%></programlisting>
|
||
90baed86 | Moritz Bunkus | |||
<para>Testet die Variable <varname>var1</varname> auf
|
||||
übereinstimmung mit der Variablen <varname>var2</varname>. Mittel
|
||||
<function>!=</function> anstelle von <function>==</function> würde
|
||||
auf Ungleichheit getestet.</para>
|
||||
<para>Erfahrere Benutzer können neben der Tests auf (Un-)Gleichheit
|
||||
b0614efa | Geoffrey Richardson | auch Tests auf Übereinstimmung mit regulären Ausdrücken ohne
|
||
90baed86 | Moritz Bunkus | Berücksichtung der Groß- und Kleinschreibung durchführen. Dazu dient
|
||
dieselbe Syntax wie oben nur mit <function>=~</function> und
|
||||
<function>!~</function> als Vergleichsoperatoren.</para>
|
||||
<para>Beispiel für einen Test, ob die Variable
|
||||
<varname>intnotes</varname> (interne Bemerkungen) das Wort
|
||||
<constant>schwierig</constant> enthält:</para>
|
||||
<programlisting><%if intnotes =~ "schwierig"%></programlisting>
|
||||
</sect3>
|
||||
<sect3 id="dokumentenvorlagen-und-variablen.bloecke.foreach">
|
||||
<title>Der foreach-Block</title>
|
||||
<programlisting><%foreach variablenname%>
|
||||
...
|
||||
<%end%></programlisting>
|
||||
<para>Fügt die Zeilen zwischen den beiden Anweisungen so oft ein,
|
||||
wie das Perl-Array der Variablen <varname>variablenname</varname>
|
||||
Elemente enthät. Dieses Konstrukt wird zur Ausgabe der einzelnen
|
||||
Posten einer Rechnung / eines Angebots sowie zur Ausgabe der Steuern
|
||||
benutzt. In jedem Durchlauf werden die <link
|
||||
linkend="dokumentenvorlagen-und-variablen.invoice-posten">zeilenbezogenen
|
||||
Variablen</link> jeweils auf den Wert für die aktuelle Position
|
||||
gesetzt.</para>
|
||||
<para>Die Syntax sieht normalerweise wie folgt aus:</para>
|
||||
<programlisting><%foreach number%>
|
||||
Position: <%runningnumber%>
|
||||
Anzahl: <%qty%>
|
||||
Artikelnummer: <%number%>
|
||||
Beschreibung: <%description%>
|
||||
...
|
||||
<%end%></programlisting>
|
||||
<para>Besonderheit in OpenDocument-Vorlagen: Tritt ein
|
||||
<function><%foreach%></function>-Block innerhalb einer
|
||||
Tabellenzelle auf, so wird die komplette Tabellenzeile so oft
|
||||
wiederholt wie notwendig. Tritt er außerhalb auf, so wird nur der
|
||||
Inhalt zwischen <function><%foreach%></function> und
|
||||
<function><%end%></function> wiederholt, nicht aber die
|
||||
komplette Zeile, in der er steht.</para>
|
||||
</sect3>
|
||||
</sect2>
|
||||
<sect2 id="dokumentenvorlagen-und-variablen.markup">
|
||||
<title>Markup-Code zur Textformatierung innerhalb von
|
||||
Formularen</title>
|
||||
5fa26f9a | Moritz Bunkus | <para>Wenn der Benutzer innhalb von Formularen in kivitendo Text
|
||
90baed86 | Moritz Bunkus | anders formatiert haben möchte, so ist dies begrenzt möglich.
|
||
5fa26f9a | Moritz Bunkus | kivitendo unterstützt die Textformatierung mit HTML-ähnlichen Tags.
|
||
90baed86 | Moritz Bunkus | Der Benutzer kann z.B. bei der Artikelbeschreibung auf einer Rechnung
|
||
Teile des Texts zwischen Start- und Endtags setzen. Dieser Teil wird
|
||||
dann automatisch in Anweisungen für das ausgewählte Vorlagenformat
|
||||
(HTML oder PDF über LaTeX) umgesetzt.</para>
|
||||
<para>Die unterstützen Formatierungen sind:</para>
|
||||
<variablelist>
|
||||
<varlistentry>
|
||||
<term><b>Text</b></term>
|
||||
<listitem>
|
||||
<para>Text wird in Fettdruck gesetzt.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><i>Text</i></term>
|
||||
<listitem>
|
||||
<para>Text wird kursiv gesetzt.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><u>Text</u></term>
|
||||
<listitem>
|
||||
<para>Text wird unterstrichen.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><s>Text</s></term>
|
||||
<listitem>
|
||||
<para>Text wird durchgestrichen. Diese Formatierung ist nicht
|
||||
bei der Ausgabe als PDF über LaTeX verfügbar.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><bullet></term>
|
||||
<listitem>
|
||||
<para>Erzeugt einen ausgefüllten Kreis für Aufzählungen (siehe
|
||||
unten).</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
<para>Der Befehl <command><bullet></command> funktioniert
|
||||
momentan auch nur in Latex-Vorlagen.</para>
|
||||
</sect2>
|
||||
</sect1>
|
||||
<sect1 id="excel-templates">
|
||||
<title>Excel-Vorlagen</title>
|
||||
<sect2 id="excel-templates.summary">
|
||||
<title>Zusammenfassung</title>
|
||||
<para>Dieses Dokument beschreibt den Mechanismus, mit dem
|
||||
Exceltemplates abgearbeitet werden, und die Einschränkungen, die damit
|
||||
einhergehen.</para>
|
||||
</sect2>
|
||||
<sect2 id="excel-templates.usage">
|
||||
<title>Bedienung</title>
|
||||
<para>Der Excel Mechanismus muss in der Konfigurationsdatei aktiviert
|
||||
werden. Die Konfigurationsoption heißt <varname>excel_templates =
|
||||
1</varname> im Abschnitt <varname>[print_templates]</varname>.</para>
|
||||
<para>Eine Excelvorlage kann dann unter dem Namen einer beliebigen
|
||||
anderen Vorlage mit der Endung <filename>.xls</filename> gespeichert
|
||||
werden. In den normalen Verkaufsmasken taucht nun
|
||||
<constant>Excel</constant> als auswählbares Format auf und kann von da
|
||||
an wie LaTeX- oder OpenOffice-Vorlagen benutzt werden.</para>
|
||||
<para>Der Sonderfall der Angebote aus der Kundenmaske ist ebenfalls
|
||||
eine Angebotsvorlage und wird unter dem internen Namen der Angebote
|
||||
<filename>sales_quotation.xls</filename> gespeichert.</para>
|
||||
</sect2>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <sect2 id="excel-templates.syntax">
|
||
<title>Variablensyntax</title>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <para>Einfache Syntax:
|
||
<command><<varname>></command></para>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <para>Dabei sind <constant><<</constant> und
|
||
<constant>>></constant> die Delimiter. Da Excel auf festen
|
||||
Breiten besteht, kann der Tag künstlich verlängert werden, indem
|
||||
weitere <constant><</constant> oder <constant>></constant>
|
||||
eingefügt werden. Der Tag muss nicht symmetrisch sein.
|
||||
Beispiel:</para>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <programlisting><<<<<varname>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>></programlisting>
|
||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <para>Um die Limitierung der festen Breite zu reduzieren, können
|
||
weitere Variablen in einem Block interpoliert werden. Whitespace wird
|
||||
dazwishen dann erhalten. Beispiel:</para>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <programlisting><<<<<varname1 varname2 varname3>>>>>>>>>>>>>>>>>>>>>>>>>></programlisting>
|
||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <para>Die Variablen werden interpoliert, und linksbündig mit
|
||
Leerzeichen auf die gewünschte Länge aufgefüllt. Ist der String zu
|
||||
lang, werden überzählige Zeichen abgeschnitten.</para>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <para>Es ist ausserdem möglich, Daten rechtsbündig darzustellen, wenn
|
||
der Block mit einem Leerzeichen anfängt. Beispiel:</para>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <programlisting><<<<<< varname>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>></programlisting>
|
||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <para>Dies würde rechtsbündig triggern. Wenn bei rechtsbündiger
|
||
Ausrichtung Text abgeschnitten werden muss, wird er vom linken Ende
|
||||
entfernt.</para>
|
||||
</sect2>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <sect2 id="excel-templates.limitations">
|
||
<title>Einschränkungen</title>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <para>Das Excelformat bis 2002 ist ein binäres Format, und kann nicht
|
||
mit vertretbarem Aufwand editiert werden. Der Templatemechanismus
|
||||
beschränkt sich daher darauf, Textstellen exakt durch einen anderen
|
||||
Text zu ersetzen.</para>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <para>Aus dem gleichen Grund sind die Kontrolllstrukturen
|
||
<command><%if%></command> und
|
||||
<command><%foreach%></command> nicht vorhanden. Der Delimiter
|
||||
<constant><% %></constant> kommt in den Headerinformationen
|
||||
evtl. vor. Deshalb wurde auf den sichereren Delimiter
|
||||
<constant><<</constant> und <constant>>></constant>
|
||||
gewechselt.</para>
|
||||
</sect2>
|
||||
</sect1>
|
||||
0e14ae06 | Andreas Zenklusen | |||
7b195af1 | Jan Büren | <sect1 id="features.warehouse">
|
||
1d3eb7c0 | Jan Büren | |||
0e14ae06 | Andreas Zenklusen | |||
<title>Mandantenkonfiguration Lager</title>
|
||||
2ff6f993 | Moritz Bunkus | <para>
|
||
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.
|
||||
</para>
|
||||
0e14ae06 | Andreas Zenklusen | |||
<itemizedlist>
|
||||
<listitem>
|
||||
<para><option>Auslagern über Standardlagerplatz</option> 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.</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para><option>Auslagern ohne Bestandsprüfung</option> 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.</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
2ff6f993 | Moritz Bunkus | <para>
|
||
1d3eb7c0 | Jan Büren | Zusätzliche Funktionshinweise:
|
||
2ff6f993 | Moritz Bunkus | </para>
|
||
0e14ae06 | Andreas Zenklusen | |||
<itemizedlist>
|
||||
<listitem>
|
||||
<para><option>Standard-Lagerplatz</option> Ist dieser konfiguriert,
|
||||
wird dies auch als Standard-Voreinstellung bei der Neuerfassung von
|
||||
2e917eea | Andreas Rudin | Stammdaten → Waren / Dienstleistung / Erzeugnis verwendet.</para>
|
||
0e14ae06 | Andreas Zenklusen | </listitem>
|
||
<listitem>
|
||||
<para><option>Standard-Lagerplatz verwenden, falls keiner in
|
||||
Stammdaten definiert</option> Wird beim 'Auslagern über
|
||||
Standardlagerplatz' keine Standardlagerplatz zu der Ware gefunden,
|
||||
so wird mit dieser Option einfach der Standardlagerplatz
|
||||
verwendet.</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
1d3eb7c0 | Jan Büren | |||
7b195af1 | Jan Büren | </sect1>
|
||
5ad10035 | Moritz Bunkus | |||
2e917eea | Andreas Rudin | <sect1 id="features.swiss-charts-of-accounts">
|
||
<title>Schweizer Kontenpläne</title>
|
||||
5ad10035 | Moritz Bunkus | |||
<para>Seit der Version 3.4.1 stehen in kivitendo 2 Kontenpläne für
|
||||
den Einsatz in der Schweiz zur Verfügung, einer für Firmen und
|
||||
Organisationen, die nicht mehrwertsteuerpflichtig sind, und einer
|
||||
2e917eea | Andreas Rudin | für Firmen, die mehrwertsteuerpflichtig sind.</para>
|
||
5ad10035 | Moritz Bunkus | |||
<para>Die Kontenpläne orientieren sich am in der Schweiz üblicherweise
|
||||
verwendeten KMU-Kontenrahmen und sind mit der Revision des Schweizerischen
|
||||
Obligationenrechts (OR) vom 1.1.2013 kompatibel, insbesondere
|
||||
2e917eea | Andreas Rudin | <literal>Art.957a Abs.2</literal>.</para>
|
||
5ad10035 | Moritz Bunkus | |||
<para>Die Möglichkeit, Saldosteuersätze zu verwenden ist in der aktuellen
|
||||
2e917eea | Andreas Rudin | Version von kivitendo noch nicht integriert.</para>
|
||
5ad10035 | Moritz Bunkus | |||
<para>Trotzdem können auch Firmen, die per Saldosteuersatz mit der
|
||||
Eidgenössischen Steuerverwaltung abrechnen, kivitendo bereits nutzen.
|
||||
Dazu wird der Kontenplan mit MWST ausgewählt. Anschliessend müssen
|
||||
alle Aufwandskonten editiert werden und dort der Steuersatz auf 0%
|
||||
2e917eea | Andreas Rudin | gesetzt werden.</para>
|
||
5ad10035 | Moritz Bunkus | |||
2e917eea | Andreas Rudin | <para>So werden bei Kreditorenbuchungen keine Vorsteuern verbucht.</para>
|
||
5ad10035 | Moritz Bunkus | |||
<para>Wünsche für Anpassungen an den Schweizer Kontenplänen sowie
|
||||
Vorschläge für weitere (z.B. branchenspezifische) Kontenpläne
|
||||
bitte an <literal>empfang@revamp-it.ch</literal> senden.</para>
|
||||
2e917eea | Andreas Rudin | </sect1>
|
||
f2e8209c | Martin Helmling | |||
<sect1 id="features.part_classification">
|
||||
f3c78a02 | Martin Helmling | <title>Artikelklassifizierung</title>
|
||
<sect2>
|
||||
<title>Übersicht</title>
|
||||
<para>Die Klassifizierung von Artikeln dient einer weiteren Gliederung
|
||||
um zum Beispiel den Einkauf vom Verkauf zu trennen, gekennzeichnet
|
||||
durch eine Beschreibung (z.B. "Einkauf") und ein Kürzel (z.B. "E").
|
||||
Für jede Klassifizierung besteht eine Beschreibung und eine Abkürzung
|
||||
die normalerweise aus einem Zeichen besteht, kann aber auf mehrere
|
||||
Zeichen erweitert werden, falls zur Unterscheidung notwendig, sinnvoll
|
||||
sind jedoch nur maximal 2 Zeichen.</para>
|
||||
</sect2>
|
||||
<sect2>
|
||||
<title>Basisklassifizierung</title>
|
||||
<para>Als Basisklassifizierungen gibt es</para>
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para>Einkauf</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>Verkauf</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>Handelsware</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>Produktion</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>- keine - (diese wird bei einer Aktualisierung für alle
|
||||
existierenden Artikel genommen, gültig für Verkauf und
|
||||
Einkauf)</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
<para>Es können weitere Klassifizierungen angelegt werden. So kann es
|
||||
z.B. für separat auszuweisende Artikel folgened Klassen geben:</para>
|
||||
<orderedlist>
|
||||
<listitem>
|
||||
<para>Lieferung (Logistik, Transport) mit Kürzel L</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>Material (Verpackungsmaterial) mit Kürzel M</para>
|
||||
</listitem>
|
||||
</orderedlist>
|
||||
</sect2>
|
||||
<sect2>
|
||||
<title>Attribute</title>
|
||||
<para>Bisher haben die Klassifizierungen folgende Attribute, die auch
|
||||
alle gleichzeitg gültig sein können</para>
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para>gültig für Verkauf - dieser Artikel kann im Verkauf genutzt
|
||||
werden</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>gültig für Einkauf - dieser Artikel kann im Einkauf genutzt
|
||||
werden</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>separat ausweisen - hierzu gibt es zur Dokumentengenerierung
|
||||
(LaTeX) zusätzliche Variable</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
<para>Beim separat ausweisen stehen im LaTeX die Variable <emphasis
|
||||
role="bold"><%non_separate_subtotal%> </emphasis>zur Verfügung,
|
||||
die alle nicht separat auszuweisenden Artikelkosten saldiert, sowie
|
||||
pro separat auszuweisenden Klassifizierungen die Variable<emphasis
|
||||
role="bold"> <%separate_X_subtotal%></emphasis> wobei X das
|
||||
Kürzel der Klassifizierung ist.</para>
|
||||
<para>Im obigen Beispiel wäre das für Lieferkosten <emphasis
|
||||
role="bold"><%separate_L_subtotal%></emphasis> und für
|
||||
Verpackungsmaterial <emphasis
|
||||
role="bold"><%separate_M_subtotal%> </emphasis>.</para>
|
||||
</sect2>
|
||||
<sect2>
|
||||
<title>Zwei-Zeichen Abkürzung</title>
|
||||
<para>Der Typ des Artikel und die Klassifizierung werden durch zwei
|
||||
Buchstaben dargestellt. Der erste Buchstabe ist eine Lokalisierung des
|
||||
Typs des Artikel ('P','A','S') , deutch 'W', 'E', und 'D' für Ware
|
||||
Erzeugnis oder Dienstleistung, ggf. weitere Typen.</para>
|
||||
<para>Der zweite (und ggf. auch ein dritter Buchstabe, falls nötig)
|
||||
entspricht der lokalisierten Abkürzung der Klassifizierung.</para>
|
||||
<para>Diese Abkürzung wird überall beim Auflisten von Artikeln zur
|
||||
Erleichterung mit dargestellt.</para>
|
||||
</sect2>
|
||||
</sect1>
|
||||
f2e8209c | Martin Helmling | |||
<sect1 id="features.file_managment">
|
||||
<title>Dateiverwaltung (Mini-DMS)</title>
|
||||
<sect2>
|
||||
<title>Übersicht</title>
|
||||
<para>Parallel zum alten WebDAV gibt es eine Datei-Management-Sytem, daß Dateien
|
||||
verschiedenen Typs verwaltet. Dies können</para>
|
||||
<orderedlist>
|
||||
<listitem>
|
||||
<para>aus ERP-Daten per LaTeX Template erzeugte PDF-Dokumente,</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>zu bestimmten ERP-Daten gehörende Anhangdateien unterschiedlichen Formats,</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>per Scanner eingelesene PDF-Dateien,</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>per Email empfangene Dateianhänge unterschiedlichen Formats,</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>sowie speziel an Artikel hochgeladene Bilder sein.</para>
|
||||
</listitem>
|
||||
</orderedlist>
|
||||
<screenshot>
|
||||
<screeninfo>Übersicht</screeninfo>
|
||||
<mediaobject>
|
||||
<imageobject>
|
||||
<imagedata contentwidth="600" fileref="images/DMS-Overview.png"/>
|
||||
</imageobject>
|
||||
</mediaobject>
|
||||
</screenshot>
|
||||
</sect2>
|
||||
<sect2>
|
||||
<title>Struktur</title>
|
||||
<para>Über eine vom Speichermedium unabhängige Zwischenschicht werden die Dateien und ihre Versionen in der Datenbank verwaltet. Darunter können verschiedene Implementierungen (Backends) gleichzeitig existieren:
|
||||
</para>
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para>Dateisystem,</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>WebDAV,</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>Schnittstelle zu externem Dokumenten-Management-System,</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>andere Datenbank,</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>etc ...</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
<para>Es gibt unterschiedliche Typen von Dateien, jedem Typ läßt sich in der
|
||||
Mandantenkonfigurierung ein bestimmtes Backend zuordnen.
|
||||
</para>
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para>"document", das sind entweder generierte,eingescannte oder hochgeladene PDF-Dateien,
|
||||
die zu bestimmten ERP-Daten (ERP-Objekte, wi z.B. Rechnung, Lieferschein) gehören.</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>"attachment", zusätzlich hochgeladene Dokumente, die an bestimmte ERP-Objekte angehängt werden,
|
||||
z.B. technische Zeichnungen,Aufmaße. Diese können auch an Artikeln,
|
||||
Lieferanten und Kunden hinterlegt sein</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>"image", Bilder an Artikeln. Diese können auch verkleinert in einer Vorschau (Thumbnail)
|
||||
angezeigt werden.</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
<para>Zusätzlich werden in der Datenbank zu den Dateien neben der Zuordnung zu ERP-Objekten, des Dateityps
|
||||
des Dateinamens und des Backends in dem die Datei gespeichert ist auch die Quelle der Datei notiert:
|
||||
</para>
|
||||
<itemizedlist>
|
||||
<listitem>
|
||||
<para> "created" , vom System erzeugte Dokumente"</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para> "uploaded", hochgeladene Dokumente</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para> "email", vom Mailsystem empfangene Dateien</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para> "scanner[1]", von einem oder mehreren Scannern erzeugte Dateien. Existieren mehrere Scanner,
|
||||
so sind diese durch unterschiedliche Quellennamen zu definieren</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
<para>Je nach Dateityp sind nur bestimmte Quellen zulässig. So gibt es für "attachment" und "image" nur
|
||||
die Quelle "uploaded". Für "document" gibt es auf jeden Fall die Quelle "created".
|
||||
Die Quellen "scanner" und "email" müssen derzeit in der Datenbank konfiguriert werden (siehe <xref linkend="file_management.dbconfig"/>.</para>
|
||||
</sect2>
|
||||
<sect2>
|
||||
<title>Anwendung</title>
|
||||
<para>Die Daten werden bei den ERP-Objekten als extra Reiter dargestellt.
|
||||
Eine Verkaufsrechnung z.B. hat die
|
||||
Reiter "Dokumente" und "Dateianhänge.</para>
|
||||
<screenshot>
|
||||
<screeninfo>Reiter "Dateianhänge"</screeninfo>
|
||||
<mediaobject>
|
||||
<imageobject>
|
||||
<imagedata scale="50" fileref="images/DMS-Anhaenge.png"/>
|
||||
</imageobject>
|
||||
</mediaobject>
|
||||
</screenshot>
|
||||
<para>Bei den Dateianhängen wird immer nur die aktuelle Version einer Datei angezeigt.
|
||||
Wird eine Datei mit gleichem Namen hochgeladen, so wird eine neue Version der Datei erstellt.
|
||||
Vorher wird der Anwender durch einen Dialog ob er eine neue Version anlegen will oder
|
||||
ob er die Datei umbenennen will, falls es eine neue Datei sein soll.</para>
|
||||
<screenshot>
|
||||
<screeninfo>Reiter "Dateianhänge"</screeninfo>
|
||||
<mediaobject>
|
||||
<imageobject>
|
||||
<imagedata width="100" contentwidth="40" fileref="images/DMS-Anhaenge-hochladen.png"/>
|
||||
</imageobject>
|
||||
</mediaobject>
|
||||
</screenshot>
|
||||
<para>Es können mehrere Dateien gleichzeitig hochgeladen werden,
|
||||
solange in Summe die maximale Größe nicht überschritten wird.
|
||||
(siehe <xref linkend="file_management.clientconfig"/></para>
|
||||
<screenshot>
|
||||
<screeninfo>Reiter "Dokumente"</screeninfo>
|
||||
<mediaobject>
|
||||
<imageobject>
|
||||
<imagedata width="500" fileref="images/DMS-Dokumente.png"/>
|
||||
</imageobject>
|
||||
</mediaobject>
|
||||
</screenshot>
|
||||
<para>Sind keine weiteren Quellen für Dokumente konfiguriert, so gibt es nur "erzeugte Dokumente".
|
||||
Es werden alle Versionen der generierten Datei angezeigt. Für Verkaufsrechnungen kommen keine
|
||||
anderen Quellen zur Geltung. Werden entsprechend
|
||||
<xref linkend="file_management.dbconfig"/> zusätzliche Quellen konfiguriert, so sind diese z.B. bei
|
||||
Einkaufsrechnungen sichtbar:</para>
|
||||
<screenshot>
|
||||
<screeninfo>Reiter "Dokumente"</screeninfo>
|
||||
<mediaobject>
|
||||
<imageobject>
|
||||
<imagedata contentwidth="600" fileref="images/DMS-Dokumente-Scanner.png"/>
|
||||
</imageobject>
|
||||
</mediaobject>
|
||||
</screenshot>
|
||||
<para>Statt des Löschens wird hier die Datei zurück zur Quelle verschoben. Somit kann die Datei anschließend
|
||||
an ein anderes ERP-Objekt angehängt werden.</para>
|
||||
<para>Derzeit sind "Titel" und "Beschreibung" noch nicht genutzt. Sie sind bisher nur bei Bildern relevant.</para>
|
||||
</sect2>
|
||||
<sect2>
|
||||
<title>Konfigurierung</title>
|
||||
<sect3 id="file_management.clientconfig" xreflabel="Mandantenkonfigurierung">
|
||||
<title>Mandantenkonfigurierung</title>
|
||||
<sect4>
|
||||
<title>Reiter "Features"</title>
|
||||
<para>Unter dem Reiter <emphasis role="bold">Features</emphasis> im Abschnit Dateimanagement ist
|
||||
neben dem "alten" WebDAV das Dateimangement general zu- und abschaltbar, sowie die Zuordnung der
|
||||
Dateitypen zu Backends. Die Löschbarkeit von Dateien sowie die maximale Uploadgröße sind Backend-unabhängig</para>
|
||||
<screenshot>
|
||||
<screeninfo>Mandantenkonfig Reiter "Features"</screeninfo>
|
||||
<mediaobject>
|
||||
<imageobject>
|
||||
<imagedata width="500" fileref="images/DMS-ClientConfig.png"/>
|
||||
</imageobject>
|
||||
</mediaobject>
|
||||
</screenshot>
|
||||
<para>Die einzelnen Backends sind einzeln einschaltbar. Spezifische Backend-Konfigurierungen sind hier
|
||||
noch ergänzbar. Für das Backend Dateisystem ist das Wurzelverzeichnis für den Mandanten einzugeben.</para>
|
||||
</sect4>
|
||||
<sect4>
|
||||
<title>Reiter "Allgemeine Dokumentenanhänge"</title>
|
||||
<para>Unter dem Reiter <emphasis role="bold">Allgemeine Dokumentenanhänge</emphasis>
|
||||
kann für alle ERP-Dokumente ( Angebote, Aufträge, Lieferscheine, Rechnungen im Verkauf und Einkauf )
|
||||
allgemeingültige Anhänge hochgeladen werden.</para>
|
||||
<screenshot>
|
||||
<screeninfo>Mandantenkonfig Reiter "Allgemeine Dokumentenanhänge"</screeninfo>
|
||||
<mediaobject>
|
||||
<imageobject>
|
||||
<imagedata width="500" fileref="images/DMS-Allgemeine-Dokumentenanhaenge.png"/>
|
||||
</imageobject>
|
||||
</mediaobject>
|
||||
</screenshot>
|
||||
<para>Diese Anhänge werden beim Generieren von PDF-Dateien an die ERP-Dokumente angehängt,
|
||||
z.B. AGBs oder aktuelle Angebote. Es werden in dem Fall die Daten kopiert, sodaß an den ERP-Dokumenten immer
|
||||
die Anhänge zum Generierungszeitpunkt eingebettet sind.
|
||||
</para>
|
||||
</sect4>
|
||||
</sect3>
|
||||
<sect3 id="file_management.dbconfig" xreflabel="Datenbank-Konfigurierung">
|
||||
<title>Datenbank-Konfigurierung</title>
|
||||
<para>Die zusätzlichen Quellen für email oder ein oder mehrere Scanner sind derzeit vom Administrator
|
||||
direkt in der Datenbanktablle "user_preferences" einzurichten. Die "value" ist im JSON-Format
|
||||
mit den jeweiligen Werten des Verzeichnisses und der Beschreibung der Quelle.</para>
|
||||
<programlisting>
|
||||
19f08831 | Moritz Bunkus | id | login | namespace | version | key | value
|
||
f2e8209c | Martin Helmling | ----+-----------+--------------+---------+----------+---------------------------
|
||
1 | #default# | file_sources | 0.00000 | scanner1 |
|
||||
{"dir":"/var/tmp/scanner1","desc":"Scanner Einkauf"}
|
||||
2 | #default# | file_sources | 0.00000 | scanner2 |
|
||||
{"dir":"/var/tmp/scanner2","desc":"Scanner Verkauf"}
|
||||
3 | #default# | file_sources | 0.00000 | emails |
|
||||
{"dir":"/var/tmp/emails","desc":"Empfangene Mails" }
|
||||
</programlisting>
|
||||
<para>Es ist daran gedacht, statt dem default Eintrag später für bestimmte Benutzer ('login') bestimmte Quellen zuzulassen,
|
||||
dies wird nach Bedarf implementiert.</para>
|
||||
</sect3>
|
||||
</sect2>
|
||||
</sect1>
|
||||
90baed86 | Moritz Bunkus | </chapter>
|
||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <chapter>
|
||
<title>Entwicklerdokumentation</title>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <sect1 id="devel.globals" xreflabel="Globale Variablen">
|
||
<title>Globale Variablen</title>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <sect2>
|
||
<title>Wie sehen globale Variablen in Perl aus?</title>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <para>Globale Variablen liegen in einem speziellen namespace namens
|
||
"main", der von überall erreichbar ist. Darüber hinaus sind bareword
|
||||
globs global und die meisten speziellen Variablen sind...
|
||||
speziell.</para>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <para>Daraus ergeben sich folgende Formen:</para>
|
||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <variablelist>
|
||
<varlistentry>
|
||||
<term><literal>$main::form</literal></term>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <listitem>
|
||
<para>expliziter Namespace "main"</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <varlistentry>
|
||
<term><literal>$::form</literal></term>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <listitem>
|
||
<para>impliziter Namespace "main"</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <varlistentry>
|
||
<term><literal>open FILE, "file.txt"</literal></term>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <listitem>
|
||
<para><varname>FILE</varname> ist global</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <varlistentry>
|
||
<term><literal>$_</literal></term>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <listitem>
|
||
<para>speziell</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <para>Im Gegensatz zu <productname>PHP</productname> gibt es kein
|
||
Schlüsselwort wie "<function>global</function>", mit dem man
|
||||
importieren kann. <function>my</function>, <function>our</function>
|
||||
und <function>local</function> machen was anderes.</para>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <variablelist>
|
||
<varlistentry>
|
||||
<term><literal>my $form</literal></term>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <listitem>
|
||
<para>lexikalische Variable, gültig bis zum Ende des
|
||||
Scopes</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <varlistentry>
|
||
<term><literal>our $form</literal></term>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <listitem>
|
||
<para><varname>$form</varname> referenziert ab hier
|
||||
<varname>$PACKAGE::form</varname>.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <varlistentry>
|
||
<term><literal>local $form</literal></term>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <listitem>
|
||
<para>Alle Änderungen an <varname>$form</varname> werden am Ende
|
||||
des scopes zurückgesetzt</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
</sect2>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <sect2>
|
||
<title>Warum sind globale Variablen ein Problem?</title>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <para>Das erste Problem ist <productname>FCGI</productname>.</para>
|
||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <para><productname>SQL-Ledger</productname> hat fast alles im globalen
|
||
namespace abgelegt, und erwartet, dass es da auch wiederzufinden ist.
|
||||
5a925d70 | Jan Büren | Unter <productname>FCGI</productname> müssen diese Sachen aber wieder
|
||
90baed86 | Moritz Bunkus | aufgeräumt werden, damit sie nicht in den nächsten Request kommen.
|
||
Einige Sachen wiederum sollen nicht gelöscht werden, wie zum Beispiel
|
||||
5a925d70 | Jan Büren | Datenbankverbindungen, weil die sehr lange zum Initialisieren
|
||
90baed86 | Moritz Bunkus | brauchen.</para>
|
||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <para>Das zweite Problem ist <function>strict</function>. Unter
|
||
<function>strict</function> werden alle Variablen die nicht explizit
|
||||
mit <function>Package</function>, <function>my</function> oder
|
||||
<function>our</function> angegeben werden als Tippfehler angemarkert,
|
||||
3adb0cb7 | Moritz Bunkus | dies hat, seit der Einführung, u.a. schon so manche langwierige
|
||
Bug-Suche verkürzt. Da globale Variablen aber implizit mit Package
|
||||
angegeben werden, werden die nicht geprüft, und somit kann sich
|
||||
schnell ein Tippfehler einschleichen.</para>
|
||||
90baed86 | Moritz Bunkus | </sect2>
|
||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <sect2>
|
||
<title>Kanonische globale Variablen</title>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <para>Um dieses Problem im Griff zu halten gibt es einige wenige
|
||
3adb0cb7 | Moritz Bunkus | globale Variablen, die kanonisch sind, d.h. sie haben bestimmte
|
||
vorgegebenen Eigenschaften, und alles andere sollte anderweitig
|
||||
umhergereicht werden.</para>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <para>Diese Variablen sind im Moment die folgenden neun:</para>
|
||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <itemizedlist>
|
||
<listitem>
|
||||
<para><varname>$::form</varname></para>
|
||||
</listitem>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <listitem>
|
||
<para><varname>%::myconfig</varname></para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para><varname>$::locale</varname></para>
|
||||
</listitem>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <listitem>
|
||
<para><varname>$::lxdebug</varname></para>
|
||||
</listitem>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <listitem>
|
||
<para><varname>$::auth</varname></para>
|
||||
</listitem>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <listitem>
|
||
<para><varname>$::lx_office_conf</varname></para>
|
||||
</listitem>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <listitem>
|
||
<para><varname>$::instance_conf</varname></para>
|
||||
</listitem>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <listitem>
|
||
<para><varname>$::dispatcher</varname></para>
|
||||
</listitem>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <listitem>
|
||
<para><varname>$::request</varname></para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
7ee506b3 | Moritz Bunkus | |||
3adb0cb7 | Moritz Bunkus | <para>Damit diese nicht erneut als Müllhalde missbraucht werden, im
|
||
Folgenden eine kurze Erläuterung der bestimmten vorgegebenen
|
||||
Eigenschaften (Konventionen):</para>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <sect3>
|
||
<title>$::form</title>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <itemizedlist>
|
||
<listitem>
|
||||
<para>Ist ein Objekt der Klasse
|
||||
"<classname>Form</classname>"</para>
|
||||
</listitem>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <listitem>
|
||
<para>Wird nach jedem Request gelöscht</para>
|
||||
</listitem>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <listitem>
|
||
<para>Muss auch in Tests und Konsolenscripts vorhanden
|
||||
sein.</para>
|
||||
</listitem>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <listitem>
|
||
<para>Enthält am Anfang eines Requests die Requestparameter vom
|
||||
User</para>
|
||||
</listitem>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <listitem>
|
||
<para>Kann zwar intern über Requestgrenzen ein Datenbankhandle
|
||||
cachen, das wird aber momentan absichtlich zerstört</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <para><varname>$::form</varname> wurde unter <productname>SQL
|
||
8aecfa7c | Geoffrey Richardson | Ledger</productname> als Gottobjekt für alles missbraucht. Sämtliche
|
||
90baed86 | Moritz Bunkus | alten Funktionen unter SL/ mutieren <varname>$::form</varname>, das
|
||
5a925d70 | Jan Büren | heißt, alles was einem lieb ist (alle Variablen die einem ans Herz
|
||
3adb0cb7 | Moritz Bunkus | gewachsen sind), sollte man vor einem Aufruf (!) von zum Beispiel
|
||
<function>IS->retrieve_customer()</function> in Sicherheit
|
||||
bringen.</para>
|
||||
dda4cde1 | Moritz Bunkus | |||
3adb0cb7 | Moritz Bunkus | <para>Z.B. das vom Benutzer eingestellte Zahlenformat, bevor man
|
||
Berechnung in einem bestimmten Format durchführt (SL/Form.pm Zeile
|
||||
3552, Stand version 2.7beta), um dies hinterher wieder auf den
|
||||
richtigen Wert zu setzen:</para>
|
||||
dda4cde1 | Moritz Bunkus | |||
<programlisting> my $saved_numberformat = $::myconfig{numberformat};
|
||||
$::myconfig{numberformat} = $numberformat;
|
||||
# (...) div Berechnungen
|
||||
$::myconfig{numberformat} = $saved_numberformat;</programlisting>
|
||||
3adb0cb7 | Moritz Bunkus | <para>Das Objekt der Klasse Form hat leider im Moment noch viele
|
||
zentrale Funktionen die vom internen Zustand abhängen, deshalb bitte
|
||||
nie einfach zerstören oder überschreiben (zumindestens nicht kurz
|
||||
vor einem Release oder in Absprache über bspw. die devel-Liste ;-).
|
||||
Es geht ziemlich sicher etwas kaputt.</para>
|
||||
<para><varname>$::form</varname> ist gleichzeitig der Standard Scope
|
||||
in den <productname>Template::Toolkit</productname> Templates
|
||||
außerhalb der Controller: der Ausdruck <function>[% var
|
||||
%]</function> greift auf <varname>$::form->{var}</varname> zu.
|
||||
Unter Controllern ist der Standard Scope anders, da lautet der
|
||||
Zugriff <function>[% FORM.var %]</function>. In Druckvorlagen sind
|
||||
normale Variablen ebenfall im <varname>$::form</varname> Scope, d.h.
|
||||
<function><%var%></function> zeigt auf
|
||||
<varname>$::form->{var}</varname>. Nochmal von der anderen Seite
|
||||
erläutert, innerhalb von (Web-)Templates sieht man häufiger solche
|
||||
Konstrukte:</para>
|
||||
dda4cde1 | Moritz Bunkus | |||
<programlisting>[%- IF business %]
|
||||
# (... Zeig die Auswahlliste Kunden-/Lieferantentyp an)
|
||||
[%- END %]</programlisting>
|
||||
3adb0cb7 | Moritz Bunkus | <para>Entweder wird hier dann $::form->{business} ausgewertet
|
||
oder aber der Funktion
|
||||
<function>$form->parse_html_template</function> wird explizit
|
||||
noch ein zusätzlicher Hash übergeben, der dann auch in den
|
||||
(Web-)Templates zu Verfügung steht, bspw. so:</para>
|
||||
dda4cde1 | Moritz Bunkus | |||
<programlisting>$form->parse_html_template("is/form_header", \%TMPL_VAR);</programlisting>
|
||||
3adb0cb7 | Moritz Bunkus | <para>Innerhalb von Schleifen wird
|
||
<varname>$::form->{TEMPLATE_ARRAYS}{var}[$index]</varname>
|
||||
bevorzugt, wenn vorhanden. Ein Beispiel findet sich in SL/DO.pm,
|
||||
welches über alle Positionen eines Lieferscheins in Schleife
|
||||
läuft:</para>
|
||||
dda4cde1 | Moritz Bunkus | |||
<programlisting>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"};
|
||||
# ...
|
||||
}</programlisting>
|
||||
</sect3>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <sect3>
|
||
<title>%::myconfig</title>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <itemizedlist>
|
||
<listitem>
|
||||
<para>Das einzige Hash unter den globalen Variablen</para>
|
||||
</listitem>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <listitem>
|
||
<para>Wird spätestens benötigt wenn auf die Datenbank
|
||||
zugegriffen wird</para>
|
||||
</listitem>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <listitem>
|
||
<para>Wird bei jedem Request neu erstellt.</para>
|
||||
</listitem>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <listitem>
|
||
<para>Enthält die Userdaten des aktuellen Logins</para>
|
||||
</listitem>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <listitem>
|
||
<para>Sollte nicht ohne Filterung irgendwo gedumpt werden oder
|
||||
extern serialisiert werden, weil da auch der Datenbankzugriff
|
||||
5a925d70 | Jan Büren | für diesen user drinsteht.</para>
|
||
90baed86 | Moritz Bunkus | </listitem>
|
||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <listitem>
|
||
ac912929 | Moritz Bunkus | <para>Enthält unter anderem Datumsformat dateformat und Nummernformat numberformat</para>
|
||
90baed86 | Moritz Bunkus | </listitem>
|
||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <listitem>
|
||
<para>Enthält Datenbankzugriffinformationen</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
7ee506b3 | Moritz Bunkus | |||
3adb0cb7 | Moritz Bunkus | <para><varname>%::myconfig</varname> ist im Moment der Ersatz für
|
||
ein Userobjekt. Die meisten Funktionen, die etwas anhand des
|
||||
aktuellen Users entscheiden müssen, befragen
|
||||
<varname>%::myconfig</varname>. Innerhalb der Anwendungen sind dies
|
||||
überwiegend die Daten, die sich unter <guimenu>Programm</guimenu>
|
||||
-> <guimenuitem>Einstellungen</guimenuitem> befinden, bzw. die
|
||||
Informationen über den Benutzer die über die
|
||||
854c9a62 | Moritz Bunkus | Administrator-Schnittstelle eingegeben wurden.</para>
|
||
7ee506b3 | Moritz Bunkus | </sect3>
|
||
90baed86 | Moritz Bunkus | <sect3>
|
||
<title>$::locale</title>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <itemizedlist>
|
||
<listitem>
|
||||
<para>Objekt der Klasse "Locale"</para>
|
||||
</listitem>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <listitem>
|
||
<para>Wird pro Request erstellt</para>
|
||||
</listitem>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <listitem>
|
||
<para>Muss auch für Tests und Scripte immer verfügbar
|
||||
sein.</para>
|
||||
</listitem>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <listitem>
|
||
<para>Cached intern über Requestgrenzen hinweg benutzte
|
||||
Locales</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <para>Lokalisierung für den aktuellen User. Alle Übersetzungen,
|
||
Zahlen- und Datumsformatierungen laufen über dieses Objekt.</para>
|
||||
</sect3>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <sect3>
|
||
<title>$::lxdebug</title>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <itemizedlist>
|
||
<listitem>
|
||||
<para>Objekt der Klasse "LXDebug"</para>
|
||||
</listitem>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <listitem>
|
||
<para>Wird global gecached</para>
|
||||
</listitem>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <listitem>
|
||
<para>Muss immer verfügbar sein, in nahezu allen
|
||||
Funktionen</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
7ee506b3 | Moritz Bunkus | |||
3adb0cb7 | Moritz Bunkus | <para><varname>$::lxdebug</varname> stellt Debuggingfunktionen
|
||
bereit, wie "<function>enter_sub</function>" und
|
||||
"<function>leave_sub</function>", mit denen in den alten Modulen ein
|
||||
brauchbares Tracing gebaut ist, "<function>log_time</function>", mit
|
||||
der man die Wallclockzeit seit Requeststart loggen kann, sowie
|
||||
"<function>message</function>" und "<function>dump</function>" mit
|
||||
5fa26f9a | Moritz Bunkus | denen man flott Informationen ins Log (tmp/kivitendo-debug.log)
|
||
3adb0cb7 | Moritz Bunkus | packen kann.</para>
|
||
dda4cde1 | Moritz Bunkus | |||
3adb0cb7 | Moritz Bunkus | <para>Beispielsweise so:</para>
|
||
dda4cde1 | Moritz Bunkus | |||
<programlisting>$main::lxdebug->message(0, 'Meine Konfig:' . Dumper (%::myconfig));
|
||||
$main::lxdebug->message(0, 'Wer bin ich? Kunde oder Lieferant:' . $form->{vc});</programlisting>
|
||||
90baed86 | Moritz Bunkus | </sect3>
|
||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <sect3>
|
||
<title>$::auth</title>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <itemizedlist>
|
||
<listitem>
|
||||
<para>Objekt der Klasse "SL::Auth"</para>
|
||||
</listitem>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <listitem>
|
||
<para>Wird global gecached</para>
|
||||
</listitem>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <listitem>
|
||
<para>Hat eine permanente DB Verbindung zur Authdatenbank</para>
|
||||
</listitem>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <listitem>
|
||
<para>Wird nach jedem Request resettet.</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <para><varname>$::auth</varname> stellt Funktionen bereit um die
|
||
Rechte des aktuellen Users abzufragen. Obwohl diese Informationen
|
||||
vom aktuellen User abhängen wird das Objekt aus
|
||||
Geschwindigkeitsgründen nur einmal angelegt und dann nach jedem
|
||||
Request kurz resettet.</para>
|
||||
854c9a62 | Moritz Bunkus | |||
0e14ae06 | Andreas Zenklusen | <para>Dieses Objekt kapselt auch den gerade aktiven Mandanten.
|
||
Dessen Einstellungen können über
|
||||
<literal>$::auth->client</literal> abgefragt werden; Rückgabewert
|
||||
ist ein Hash mit den Werten aus der Tabelle
|
||||
854c9a62 | Moritz Bunkus | <literal>auth.clients</literal>.</para>
|
||
7ee506b3 | Moritz Bunkus | </sect3>
|
||
90baed86 | Moritz Bunkus | <sect3>
|
||
<title>$::lx_office_conf</title>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <itemizedlist>
|
||
<listitem>
|
||||
<para>Objekt der Klasse
|
||||
"<classname>SL::LxOfficeConf</classname>"</para>
|
||||
</listitem>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <listitem>
|
||
<para>Global gecached</para>
|
||||
</listitem>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <listitem>
|
||
<para>Repräsentation der
|
||||
5fa26f9a | Moritz Bunkus | <filename>config/kivitendo.conf[.default]</filename>-Dateien</para>
|
||
90baed86 | Moritz Bunkus | </listitem>
|
||
</itemizedlist>
|
||||
7ee506b3 | Moritz Bunkus | |||
5a925d70 | Jan Büren | <para>Globale Konfiguration. Configdateien werden zum Start gelesen
|
||
3adb0cb7 | Moritz Bunkus | und danach nicht mehr angefasst. Es ist derzeit nicht geplant, dass
|
||
das Programm die Konfiguration ändern kann oder sollte.</para>
|
||||
7ee506b3 | Moritz Bunkus | |||
3adb0cb7 | Moritz Bunkus | <para>Beispielsweise ist über den Konfigurationseintrag [debug] die
|
||
Debug- und Trace-Log-Datei wie folgt konfiguriert und
|
||||
verfügbar:</para>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <programlisting>[debug]
|
||
fa324fa5 | Jan Büren | file_name = /tmp/kivitendo-debug.log</programlisting>
|
||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <para>ist der Key <varname>file</varname> im Programm als
|
||
<varname>$::lx_office_conf->{debug}{file}</varname>
|
||||
erreichbar.</para>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <warning>
|
||
<para>Zugriff auf die Konfiguration erfolgt im Moment über
|
||||
Hashkeys, sind also nicht gegen Tippfehler abgesichert.</para>
|
||||
</warning>
|
||||
</sect3>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <sect3>
|
||
<title>$::instance_conf</title>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <itemizedlist>
|
||
7ee506b3 | Moritz Bunkus | <listitem>
|
||
90baed86 | Moritz Bunkus | <para>Objekt der Klasse
|
||
"<classname>SL::InstanceConfiguration</classname>"</para>
|
||||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>wird pro Request neu erstellt</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
90baed86 | Moritz Bunkus | </itemizedlist>
|
||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <para>Funktioniert wie <varname>$::lx_office_conf</varname>,
|
||
speichert aber Daten die von der Instanz abhängig sind. Eine Instanz
|
||||
3adb0cb7 | Moritz Bunkus | ist hier eine Mandantendatenbank. Beispielsweise überprüft
|
||
dda4cde1 | Moritz Bunkus | <programlisting>$::instance_conf->get_inventory_system eq 'perpetual'</programlisting>
|
||
5a925d70 | Jan Büren | ob die berüchtigte Bestandsmethode zur Anwendung kommt.</para>
|
||
90baed86 | Moritz Bunkus | </sect3>
|
||
<sect3>
|
||||
<title>$::dispatcher</title>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <itemizedlist>
|
||
7ee506b3 | Moritz Bunkus | <listitem>
|
||
90baed86 | Moritz Bunkus | <para>Objekt der Klasse
|
||
"<varname>SL::Dispatcher</varname>"</para>
|
||||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
90baed86 | Moritz Bunkus | <listitem>
|
||
<para>wird pro Serverprozess erstellt.</para>
|
||||
</listitem>
|
||||
7ee506b3 | Moritz Bunkus | |||
<listitem>
|
||||
90baed86 | Moritz Bunkus | <para>enthält Informationen über die technische Verbindung zum
|
||
Server</para>
|
||||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
90baed86 | Moritz Bunkus | </itemizedlist>
|
||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <para>Der dritte Punkt ist auch der einzige Grund warum das Objekt
|
||
global gespeichert wird. Wird vermutlich irgendwann in einem anderen
|
||||
Objekt untergebracht.</para>
|
||||
</sect3>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <sect3>
|
||
<title>$::request</title>
|
||||
<itemizedlist>
|
||||
7ee506b3 | Moritz Bunkus | <listitem>
|
||
90baed86 | Moritz Bunkus | <para>Hashref (evtl später Objekt)</para>
|
||
7ee506b3 | Moritz Bunkus | </listitem>
|
||
90baed86 | Moritz Bunkus | <listitem>
|
||
<para>Wird pro Request neu initialisiert.</para>
|
||||
</listitem>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <listitem>
|
||
<para>Keine Unterstruktur garantiert.</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <para><varname>$::request</varname> ist ein generischer Platz um
|
||
Daten "für den aktuellen Request" abzulegen. Sollte nicht für action
|
||||
at a distance benutzt werden, sondern um lokales memoizing zu
|
||||
ermöglichen, das garantiert am Ende des Requests zerstört
|
||||
wird.</para>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <para>Vieles von dem, was im moment in <varname>$::form</varname>
|
||
liegt, sollte eigentlich hier liegen. Die groben
|
||||
Differentialkriterien sind:</para>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <itemizedlist>
|
||
<listitem>
|
||||
3adb0cb7 | Moritz Bunkus | <para>Kommt es vom User, und soll unverändert wieder an den
|
||
User? Dann <varname>$::form</varname>, steht da eh schon</para>
|
||||
90baed86 | Moritz Bunkus | </listitem>
|
||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <listitem>
|
||
3adb0cb7 | Moritz Bunkus | <para>Sind es Daten aus der Datenbank, die nur bis zum Ende des
|
||
Requests gebraucht werden? Dann
|
||||
90baed86 | Moritz Bunkus | <varname>$::request</varname></para>
|
||
</listitem>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <listitem>
|
||
3adb0cb7 | Moritz Bunkus | <para>Muss ich von anderen Teilen des Programms lesend drauf
|
||
zugreifen? Dann <varname>$::request</varname>, aber Zugriff über
|
||||
90baed86 | Moritz Bunkus | Wrappermethode</para>
|
||
</listitem>
|
||||
</itemizedlist>
|
||||
</sect3>
|
||||
7ee506b3 | Moritz Bunkus | </sect2>
|
||
90baed86 | Moritz Bunkus | <sect2>
|
||
<title>Ehemalige globale Variablen</title>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <para>Die folgenden Variablen waren einmal im Programm, und wurden
|
||
entfernt.</para>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <sect3>
|
||
<title>$::cgi</title>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <itemizedlist>
|
||
<listitem>
|
||||
<para>war nötig, weil cookie Methoden nicht als
|
||||
Klassenfunktionen funktionieren</para>
|
||||
</listitem>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <listitem>
|
||
<para>Aufruf als Klasse erzeugt Dummyobjekt was im
|
||||
Klassennamespace gehalten wird und über Requestgrenzen
|
||||
leaked</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>liegt jetzt unter
|
||||
<varname>$::request->{cgi}</varname></para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
</sect3>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <sect3>
|
||
<title>$::all_units</title>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <itemizedlist>
|
||
<listitem>
|
||||
<para>war nötig, weil einige Funktionen in Schleifen zum Teil
|
||||
ein paar hundert mal pro Request eine Liste der Einheiten
|
||||
brauchen, und de als Parameter durch einen Riesenstack von
|
||||
Funktionen geschleift werden müssten.</para>
|
||||
</listitem>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <listitem>
|
||
<para>Liegt jetzt unter
|
||||
<varname>$::request->{cache}{all_units}</varname></para>
|
||||
</listitem>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <listitem>
|
||
<para>Wird nur in
|
||||
<function>AM->retrieve_all_units()</function> gesetzt oder
|
||||
gelesen.</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
</sect3>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <sect3>
|
||
<title>%::called_subs</title>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <itemizedlist>
|
||
<listitem>
|
||||
<para>wurde benutzt um callsub deep recursions
|
||||
abzufangen.</para>
|
||||
</listitem>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <listitem>
|
||
<para>Wurde entfernt, weil callsub nur einen Bruchteil der
|
||||
möglichen Rekursioenen darstellt, und da nie welche
|
||||
auftreten.</para>
|
||||
</listitem>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <listitem>
|
||
<para>komplette recursion protection wurde entfernt.</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
</sect3>
|
||||
7ee506b3 | Moritz Bunkus | </sect2>
|
||
</sect1>
|
||||
<sect1 id="devel.fcgi">
|
||||
<title>Entwicklung unter FastCGI</title>
|
||||
<sect2 id="devel.fcgi.general">
|
||||
<title>Allgemeines</title>
|
||||
5fa26f9a | Moritz Bunkus | <para>Wenn Änderungen in der Konfiguration von kivitendo gemacht
|
||
7ee506b3 | Moritz Bunkus | werden, muss der Webserver neu gestartet werden.</para>
|
||
<para>Bei der Entwicklung für FastCGI ist auf ein paar Fallstricke zu
|
||||
achten. Dadurch, dass das Programm in einer Endlosschleife läuft,
|
||||
müssen folgende Aspekte beachtet werden.</para>
|
||||
</sect2>
|
||||
<sect2 id="devel.fcgi.exiting">
|
||||
<title>Programmende und Ausnahmen</title>
|
||||
<para>Betrifft die Funktionen <function>warn</function>,
|
||||
<function>die</function>, <function>exit</function>,
|
||||
<function>carp</function> und <function>confess</function>.</para>
|
||||
<para>Fehler, die dass Programm normalerweise sofort beenden (fatale
|
||||
Fehler), werden mit dem FastCGI Dispatcher abgefangen, um das Programm
|
||||
am Laufen zu halten. Man kann mit <function>die</function>,
|
||||
<function>confess</function> oder <function>carp</function> Fehler
|
||||
5fa26f9a | Moritz Bunkus | ausgeben, die dann vom Dispatcher angezeigt werden. Die kivitendo
|
||
7ee506b3 | Moritz Bunkus | eigene <function>$::form-</function>error()> tut im Prinzip das
|
||
Gleiche, mit ein paar Extraoptionen. <function>warn</function> und
|
||||
<function>exit</function> hingegen werden nicht abgefangen.
|
||||
<function>warn</function> wird direkt nach STDERR, also in Server Log
|
||||
eine Nachricht schreiben (sofern in der Konfiguration nicht die
|
||||
5fa26f9a | Moritz Bunkus | Warnungen in das kivitendo Log umgeleitet wurden), und
|
||
7ee506b3 | Moritz Bunkus | <function>exit</function> wird die Ausführung beenden.</para>
|
||
<para>Prinzipiell ist es kein Beinbruch, wenn sich der Prozess
|
||||
beendet, fcgi wird ihn sofort neu starten. Allerdings sollte das die
|
||||
Ausnahme sein. Quintessenz: Bitte kein <function>exit</function>
|
||||
benutzen, alle anderen Exceptionmechanismen sind ok.</para>
|
||||
</sect2>
|
||||
<sect2 id="devel.fcgi.globals">
|
||||
<title>Globale Variablen</title>
|
||||
<para>Um zu vermeiden, dass Informationen von einem Request in einen
|
||||
anderen gelangen, müssen alle globalen Variablen vor einem Request
|
||||
sauber initialisiert werden. Das ist besonders wichtig im
|
||||
<varname>$::cgi</varname> und <varname>$::auth</varname> Objekt, weil
|
||||
diese nicht gelöscht werden pro Instanz, sondern persistent gehalten
|
||||
werden.</para>
|
||||
<para>In <classname>SL::Dispatcher</classname> gibt es einen sauber
|
||||
abgetrennten Block, der alle kanonischen globalen Variablen listet und
|
||||
erklärt. Bitte keine anderen einführen ohne das sauber zu
|
||||
dokumentieren.</para>
|
||||
<para>Datenbankverbindungen wird noch ein Guide verfasst werden, wie
|
||||
man sicher geht, dass man die richtige erwischt.</para>
|
||||
</sect2>
|
||||
<sect2 id="devel.fcgi.performance">
|
||||
<title>Performance und Statistiken</title>
|
||||
<para>Die kritischen Pfade des Programms sind die Belegmasken, und
|
||||
unter diesen ganz besonders die Verkaufsrechnungsmaske. Ein Aufruf der
|
||||
5fa26f9a | Moritz Bunkus | Rechnungsmaske in kivitendo 2.4.3 stable dauert auf einem Core2duo mit
|
||
7ee506b3 | Moritz Bunkus | 4GB Arbeitsspeicher und Ubuntu 9.10 eine halbe Sekunde. In der 2.6.0
|
||
sind es je nach Menge der definierten Variablen 1-2s. Ab der
|
||||
Moose/Rose::DB Version sind es 5-6s.</para>
|
||||
<para>Mit FastCGI ist die neuste Version auf 0,26 Sekunden selbst in
|
||||
den kritischen Pfaden, unter 0,15 sonst.</para>
|
||||
</sect2>
|
||||
</sect1>
|
||||
<sect1 id="db-upgrade-files" xreflabel="Datenbank-Upgradedateien">
|
||||
3adb0cb7 | Moritz Bunkus | <title>SQL-Upgradedateien</title>
|
||
7ee506b3 | Moritz Bunkus | |||
3adb0cb7 | Moritz Bunkus | <sect2 id="db-upgrade-files.introduction"
|
||
xreflabel="Einführung in die Datenbank-Upgradedateien">
|
||||
<title>Einführung</title>
|
||||
7ee506b3 | Moritz Bunkus | |||
0e14ae06 | Andreas Zenklusen | <para>Datenbankupgrades werden über einzelne Upgrade-Scripte
|
||
gesteuert, die sich im Verzeichnis
|
||||
<filename>sql/Pg-upgrade2</filename> befinden. In diesem Verzeichnis
|
||||
muss pro Datenbankupgrade eine Datei existieren, die neben den
|
||||
eigentlich auszuführenden SQL- oder Perl-Befehlen einige
|
||||
Kontrollinformationen enthält.</para>
|
||||
<para>Kontrollinformationen definieren Abhängigkeiten und Prioritäten,
|
||||
sodass Datenbankscripte zwar in einer sicheren Reihenfolge ausgeführt
|
||||
werden (z.B. darf ein <literal>ALTER TABLE</literal> erst ausgeführt
|
||||
werden, wenn die Tabelle mit <literal>CREATE TABLE</literal> angelegt
|
||||
wurde), diese Reihenfolge aber so flexibel ist, dass man keine
|
||||
Versionsnummern braucht.</para>
|
||||
<para>kivitendo merkt sich dabei, welches der Upgradescripte in
|
||||
<filename>sql/Pg-upgrade2</filename> bereits durchgeführt wurde und
|
||||
führt diese nicht erneut aus. Dazu dient die Tabelle
|
||||
"<literal>schema_info</literal>", die bei der Anmeldung automatisch
|
||||
angelegt wird.</para>
|
||||
3adb0cb7 | Moritz Bunkus | </sect2>
|
||
7ee506b3 | Moritz Bunkus | |||
3adb0cb7 | Moritz Bunkus | <sect2 id="db-upgrade-files.format"
|
||
xreflabel="Format der Upgradedateien">
|
||||
<title>Format der Kontrollinformationen</title>
|
||||
7ee506b3 | Moritz Bunkus | |||
3adb0cb7 | Moritz Bunkus | <para>Die Kontrollinformationen sollten sich am Anfang der jeweiligen
|
||
Upgradedatei befinden. Jede Zeile, die Kontrollinformationen enthält,
|
||||
hat dabei das folgende Format:</para>
|
||||
7ee506b3 | Moritz Bunkus | |||
3adb0cb7 | Moritz Bunkus | <para>Für SQL-Upgradedateien:</para>
|
||
7ee506b3 | Moritz Bunkus | |||
3adb0cb7 | Moritz Bunkus | <programlisting>-- @key: value</programlisting>
|
||
7ee506b3 | Moritz Bunkus | |||
3adb0cb7 | Moritz Bunkus | <para>Für Perl-Upgradedateien:</para>
|
||
7ee506b3 | Moritz Bunkus | |||
3adb0cb7 | Moritz Bunkus | <programlisting># @key: value</programlisting>
|
||
7ee506b3 | Moritz Bunkus | |||
3adb0cb7 | Moritz Bunkus | <para>Leerzeichen vor "<varname>value</varname>" werden
|
||
entfernt.</para>
|
||||
7ee506b3 | Moritz Bunkus | |||
3adb0cb7 | Moritz Bunkus | <para>Die folgenden Schlüsselworte werden verarbeitet:</para>
|
||
7ee506b3 | Moritz Bunkus | |||
3adb0cb7 | Moritz Bunkus | <variablelist>
|
||
<varlistentry>
|
||||
<term><varname>tag</varname></term>
|
||||
7ee506b3 | Moritz Bunkus | |||
3adb0cb7 | Moritz Bunkus | <listitem>
|
||
<para>Wird zwingend benötigt. Dies ist der "Name" des Upgrades.
|
||||
Dieser "tag" kann von anderen Kontrolldateien in ihren
|
||||
Abhängigkeiten verwendet werden (Schlüsselwort
|
||||
"<varname>depends</varname>"). Der "tag" ist auch der Name, der
|
||||
in der Datenbank eingetragen wird.</para>
|
||||
<para>Normalerweise sollte die Kontrolldatei genau so heißen wie
|
||||
der "tag", nur mit der Endung ".sql" bzw. "pl".</para>
|
||||
<para>Ein Tag darf nur aus alphanumerischen Zeichen sowie den
|
||||
Zeichen _ - ( ) bestehen. Insbesondere sind Leerzeichen nicht
|
||||
erlaubt und sollten stattdessen mit Unterstrichen ersetzt
|
||||
werden.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
7ee506b3 | Moritz Bunkus | |||
3adb0cb7 | Moritz Bunkus | <varlistentry>
|
||
<term><varname>charset</varname></term>
|
||||
7ee506b3 | Moritz Bunkus | |||
3adb0cb7 | Moritz Bunkus | <listitem>
|
||
0e14ae06 | Andreas Zenklusen | <para>Empfohlen. Gibt den Zeichensatz an, in dem das Script
|
||
geschrieben wurde, z.B. "<literal>UTF-8</literal>". Aus
|
||||
Kompatibilitätsgründen mit alten Upgrade-Scripten wird bei
|
||||
Abwesenheit des Tags für SQL-Upgradedateien der Zeichensatz
|
||||
"<literal>ISO-8859-15</literal>" angenommen. Perl-Upgradescripte
|
||||
hingegen müssen immer in UTF-8 encodiert sein und sollten
|
||||
demnach auch ein "<literal>use utf8;</literal>"
|
||||
enthalten.</para>
|
||||
3adb0cb7 | Moritz Bunkus | </listitem>
|
||
</varlistentry>
|
||||
7ee506b3 | Moritz Bunkus | |||
3adb0cb7 | Moritz Bunkus | <varlistentry>
|
||
<term><varname>description</varname></term>
|
||||
7ee506b3 | Moritz Bunkus | |||
3adb0cb7 | Moritz Bunkus | <listitem>
|
||
<para>Benötigt. Eine Beschreibung, was in diesem Update
|
||||
passiert. Diese wird dem Benutzer beim eigentlichen
|
||||
8aecfa7c | Geoffrey Richardson | Datenbankupdate angezeigt. Während der Tag in Englisch gehalten
|
||
3adb0cb7 | Moritz Bunkus | sein sollte, sollte die Beschreibung auf Deutsch
|
||
erfolgen.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
7ee506b3 | Moritz Bunkus | |||
3adb0cb7 | Moritz Bunkus | <varlistentry>
|
||
<term><varname>depends</varname></term>
|
||||
7ee506b3 | Moritz Bunkus | |||
3adb0cb7 | Moritz Bunkus | <listitem>
|
||
<para>Optional. Eine mit Leerzeichen getrennte Liste von "tags",
|
||||
5fa26f9a | Moritz Bunkus | von denen dieses Upgradescript abhängt. kivitendo stellt sicher,
|
||
3adb0cb7 | Moritz Bunkus | dass die in dieser Liste aufgeführten Scripte bereits
|
||
durchgeführt wurden, bevor dieses Script ausgeführt wird.</para>
|
||||
<para>Abhängigkeiten werden rekursiv betrachtet. Wenn also ein
|
||||
Script "b" existiert, das von Änderungen in "a" abhängt, und
|
||||
eine neue Kontrolldatei für "c" erstellt wird, die von
|
||||
Änderungen in "a" und "b" abhängt, so genügt es, in "c" nur den
|
||||
Tag "b" als Abhängigkeit zu definieren.</para>
|
||||
<para>Es ist nicht erlaubt, sich selbst referenzierende
|
||||
Abhängigkeiten zu definieren (z.B. "a" -> "b", "b" -> "c"
|
||||
und "c" -> "a").</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
7ee506b3 | Moritz Bunkus | |||
3adb0cb7 | Moritz Bunkus | <varlistentry>
|
||
<term><varname>priority</varname></term>
|
||||
7ee506b3 | Moritz Bunkus | |||
3adb0cb7 | Moritz Bunkus | <listitem>
|
||
<para>Optional. Ein Zahlenwert, der die Reihenfolge bestimmt, in
|
||||
der Scripte ausgeführt werden, die die gleichen
|
||||
Abhängigkeitstiefen besitzen. Fehlt dieser Parameter, so wird
|
||||
der Wert 1000 benutzt.</para>
|
||||
<para>Dies ist reine Kosmetik. Für echte Reihenfolgen muss
|
||||
5fa26f9a | Moritz Bunkus | "depends" benutzt werden. kivitendo sortiert die auszuführenden
|
||
3adb0cb7 | Moritz Bunkus | Scripte zuerst nach der Abhängigkeitstiefe (wenn "z" von "y"
|
||
abhängt und "y" von "x", so hat "z" eine Abhängigkeitstiefe von
|
||||
2, "y" von 1 und "x" von 0. "x" würde hier zuerst ausgeführt,
|
||||
dann "y", dann "z"), dann nach der Priorität und bei gleicher
|
||||
Priorität alphabetisch nach dem "tag".</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
7ee506b3 | Moritz Bunkus | |||
3adb0cb7 | Moritz Bunkus | <varlistentry>
|
||
<term><varname>ignore</varname></term>
|
||||
7ee506b3 | Moritz Bunkus | |||
3adb0cb7 | Moritz Bunkus | <listitem>
|
||
<para>Optional. Falls der Wert auf 1 (true) steht, wird das
|
||||
Skript bei der Anmeldung ignoriert und entsprechend nicht
|
||||
ausgeführt.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
</sect2>
|
||||
7ee506b3 | Moritz Bunkus | |||
0e14ae06 | Andreas Zenklusen | <sect2 id="db-upgrade-files.format-perl-files"
|
||
xreflabel="Format von Perl-Upgradedateien">
|
||||
<title>Format von in Perl geschriebenen
|
||||
Datenbankupgradescripten</title>
|
||||
f1a40f51 | Moritz Bunkus | |||
0e14ae06 | Andreas Zenklusen | <para>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.</para>
|
||||
f1a40f51 | Moritz Bunkus | |||
0e14ae06 | Andreas Zenklusen | <para>Ein Upgradescript stellt dabei eine vollständige Objektklasse
|
||
dar, die vom Elternobjekt "<literal>SL::DBUpgrade2::Base</literal>"
|
||||
erben und eine Funktion namens "<literal>run</literal>" zur Verfügung
|
||||
stellen muss. Das Script wird ausgeführt, indem eine Instanz dieser
|
||||
Klasse erzeugt und darauf die erwähnte "<literal>run</literal>"
|
||||
aufgerufen wird.</para>
|
||||
f1a40f51 | Moritz Bunkus | |||
0e14ae06 | Andreas Zenklusen | <para>Zu beachten ist, dass sich der Paketname der Datei aus dem Wert
|
||
für "<literal>@tag</literal>" ableitet. Dabei werden alle Zeichen, die
|
||||
in Paketnamen ungültig wären (gerade Bindestriche), durch Unterstriche
|
||||
ersetzt. Insgesamt sieht der Paketname wie folgt aus:
|
||||
"<literal>SL::DBUpgrade2::tag</literal>".</para>
|
||||
f1a40f51 | Moritz Bunkus | |||
0e14ae06 | Andreas Zenklusen | <para>Welche Komfortfunktionen zur Verfügung stehen, erfahren Sie in
|
||
der Perl-Dokumentation zum oben genannten Modul; aufzurufen mit
|
||||
"<command>perldoc SL/DBUpgrade2/Base.pm</command>".</para>
|
||||
f1a40f51 | Moritz Bunkus | |||
0e14ae06 | Andreas Zenklusen | <para>Ein Mindestgerüst eines gültigen Perl-Upgradescriptes sieht wie
|
||
folgt aus:</para>
|
||||
f1a40f51 | Moritz Bunkus | |||
0e14ae06 | Andreas Zenklusen | <programlisting># @tag: beispiel-upgrade-file42
|
||
f1a40f51 | Moritz Bunkus | # @description: Ein schönes Beispielscript
|
||
8b7a4bff | Jan Büren | # @depends: release_3_1_0
|
||
f1a40f51 | Moritz Bunkus | 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;
|
||||
</programlisting>
|
||||
</sect2>
|
||||
3adb0cb7 | Moritz Bunkus | <sect2 id="db-upgrade-files.dbupgrade-tool"
|
||
xreflabel="Hilfsscript dbupgrade2_tool.pl">
|
||||
<title>Hilfsscript dbupgrade2_tool.pl</title>
|
||||
7ee506b3 | Moritz Bunkus | |||
3adb0cb7 | Moritz Bunkus | <para>Um die Arbeit mit den Abhängigkeiten etwas zu erleichtern,
|
||
existiert ein Hilfsscript namens
|
||||
"<filename>scripts/dbupgrade2_tool.pl</filename>". Es muss aus dem
|
||||
5fa26f9a | Moritz Bunkus | kivitendo-ERP-Basisverzeichnis heraus aufgerufen werden. Dieses Tool
|
||
3adb0cb7 | Moritz Bunkus | liest alle Datenbankupgradescripte aus dem Verzeichnis
|
||
<filename>sql/Pg-upgrade2</filename> aus. Es benutzt dafür die
|
||||
5fa26f9a | Moritz Bunkus | gleichen Methoden wie kivitendo selber, sodass alle Fehlersituationen
|
||
3adb0cb7 | Moritz Bunkus | von der Kommandozeile überprüft werden können.</para>
|
||
7ee506b3 | Moritz Bunkus | |||
3adb0cb7 | Moritz Bunkus | <para>Wird dem Script kein weiterer Parameter übergeben, so wird nur
|
||
eine Überprüfung der Felder und Abhängigkeiten vorgenommen. Man kann
|
||||
sich aber auch Informationen auf verschiedene Art ausgeben
|
||||
lassen:</para>
|
||||
7ee506b3 | Moritz Bunkus | |||
3adb0cb7 | Moritz Bunkus | <itemizedlist>
|
||
<listitem>
|
||||
<para>Listenform: "<command>./scripts/dbupgrade2_tool.pl
|
||||
--list</command>"</para>
|
||||
7ee506b3 | Moritz Bunkus | |||
3adb0cb7 | Moritz Bunkus | <para>Gibt eine Liste aller Scripte aus. Die Liste ist in der
|
||
5fa26f9a | Moritz Bunkus | Reihenfolge sortiert, in der kivitendo die Scripte ausführen
|
||
3adb0cb7 | Moritz Bunkus | würde. Es werden neben der Listenposition der Tag, die
|
||
Abhängigkeitstiefe und die Priorität ausgegeben.</para>
|
||||
</listitem>
|
||||
7ee506b3 | Moritz Bunkus | |||
3adb0cb7 | Moritz Bunkus | <listitem>
|
||
<para>Baumform: "<command>./scripts/dbupgrade2_tool.pl
|
||||
--tree</command>"</para>
|
||||
<para>Listet alle Tags in Baumform basierend auf den
|
||||
Abhängigkeiten auf. Die "Wurzelknoten" sind dabei die Scripte, von
|
||||
denen keine anderen abhängen. Die Unterknoten sind Scripte, die
|
||||
beim übergeordneten Script als Abhängigkeit eingetragen
|
||||
sind.</para>
|
||||
</listitem>
|
||||
7ee506b3 | Moritz Bunkus | |||
3adb0cb7 | Moritz Bunkus | <listitem id="db-upgrade-files.dbupgrade-tool.reverse-tree">
|
||
<para>Umgekehrte Baumform: "<command>./scripts/dbupgrade2_tool.pl
|
||||
--rtree</command>"</para>
|
||||
7ee506b3 | Moritz Bunkus | |||
3adb0cb7 | Moritz Bunkus | <para>Listet alle Tags in Baumform basierend auf den
|
||
Abhängigkeiten auf. Die "Wurzelknoten" sind dabei die Scripte mit
|
||||
der geringsten Abhängigkeitstiefe. Die Unterknoten sind Scripte,
|
||||
die das übergeordnete Script als Abhängigkeit eingetragen
|
||||
haben.</para>
|
||||
</listitem>
|
||||
7ee506b3 | Moritz Bunkus | |||
3adb0cb7 | Moritz Bunkus | <listitem>
|
||
<para>Baumform mit Postscriptausgabe:
|
||||
"<command>./scripts/dbupgrade2_tool.pl
|
||||
--graphviz</command>"</para>
|
||||
<para>Benötigt das Tool "<command>graphviz</command>", um mit
|
||||
seiner Hilfe die <link
|
||||
linkend="db-upgrade-files.dbupgrade-tool.reverse-tree">umgekehrte
|
||||
Baumform</link> in eine Postscriptdatei namens
|
||||
"<filename>db_dependencies.ps</filename>" auszugeben. Dies ist
|
||||
vermutlich die übersichtlichste Form, weil hierbei jeder Knoten
|
||||
nur einmal ausgegeben wird. Bei den Textmodusbaumformen hingegen
|
||||
können Knoten und all ihre Abhängigkeiten mehrfach ausgegeben
|
||||
werden.</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>Scripte, von denen kein anderes Script abhängt:
|
||||
"<command>./scripts/dbupgrade2_tool.pl --nodeps</command>"</para>
|
||||
<para>Listet die Tags aller Scripte auf, von denen keine anderen
|
||||
Scripte abhängen.</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
</sect2>
|
||||
7ee506b3 | Moritz Bunkus | </sect1>
|
||
<sect1 id="translations-languages" xreflabel="Translations and languages">
|
||||
<title>Translations and languages</title>
|
||||
<sect2 id="translations-languages.introduction"
|
||||
xreflabel="Introduction to translations and languages">
|
||||
<title>Introduction</title>
|
||||
<note>
|
||||
<para>Dieser Abschnitt ist in Englisch geschrieben, um
|
||||
internationalen Übersetzern die Arbeit zu erleichtern.</para>
|
||||
</note>
|
||||
5fa26f9a | Moritz Bunkus | <para>This section describes how localization packages in kivitendo
|
||
7ee506b3 | Moritz Bunkus | are built. Currently the only language fully supported is German, and
|
||
since most of the internal messages are held in English the English
|
||||
version is usable too.</para>
|
||||
</sect2>
|
||||
dbda14c2 | Moritz Bunkus | <sect2 id="translations-languages.character-set"
|
||
xreflabel="Character set">
|
||||
<title>Character set</title>
|
||||
0e14ae06 | Andreas Zenklusen | <para>All files included in a language pack must use UTF-8 as their
|
||
encoding.</para>
|
||||
dbda14c2 | Moritz Bunkus | </sect2>
|
||
7ee506b3 | Moritz Bunkus | <sect2 id="translations-languages.file-structure"
|
||
xreflabel="File structure">
|
||||
<title>File structure</title>
|
||||
5fa26f9a | Moritz Bunkus | <para>The structure of locales in kivitendo is:</para>
|
||
7ee506b3 | Moritz Bunkus | |||
5fa26f9a | Moritz Bunkus | <programlisting>kivitendo/locale/<langcode>/</programlisting>
|
||
7ee506b3 | Moritz Bunkus | |||
<para>where <langcode> stands for an abbreviation of the
|
||||
language package. The builtin packages use two letter <ulink
|
||||
url="http://en.wikipedia.org/wiki/ISO_639-1">ISO 639-1</ulink> codes,
|
||||
but the actual name is not relevant for the program and can easily be
|
||||
extended to <ulink
|
||||
url="http://en.wikipedia.org/wiki/IETF_language_tag">IETF language
|
||||
tags</ulink> (i.e. "en_GB"). In fact the original language packages
|
||||
from SQL Ledger are named in this way.</para>
|
||||
<para>In such a language directory the following files are
|
||||
recognized:</para>
|
||||
<variablelist>
|
||||
<varlistentry>
|
||||
<term>LANGUAGE</term>
|
||||
<listitem>
|
||||
<para>This file is mandatory.</para>
|
||||
<para>The <filename>LANGUAGE</filename> file contains the self
|
||||
descripted name of the language. It should contain a native
|
||||
representation first, and in parenthesis an english translation
|
||||
after that. Example:</para>
|
||||
<programlisting>Deutsch (German)</programlisting>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>all</term>
|
||||
<listitem>
|
||||
<para>This file is mandatory.</para>
|
||||
<para>The central translation file. It is essentially an inline
|
||||
Perl script autogenerated by <command>locales.pl</command>. To
|
||||
generate it, generate the directory and the two files mentioned
|
||||
above, and execute the following command:</para>
|
||||
<programlisting>scripts/locales.pl <langcode></programlisting>
|
||||
<para>Otherwise you can simply copy one of the other languages.
|
||||
You will be told how many are missing like this:</para>
|
||||
<programlisting>$ scripts/locales.pl en
|
||||
English - 0.6% - 2015/2028 missing</programlisting>
|
||||
<para>A file named "<filename>missing</filename>" will be
|
||||
generated and can be edited. You can also edit the
|
||||
"<filename>all</filename>" file directly. Edit everything you
|
||||
like to fit the target language and execute
|
||||
<command>locales.pl</command> again. See how the missing words
|
||||
get fewer.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>Num2text</term>
|
||||
<listitem>
|
||||
<para>Legacy code from SQL Ledger. It provides a means for
|
||||
numbers to be converted into natural language, like
|
||||
<literal>1523 => one thousand five hundred twenty
|
||||
three</literal>. If you want to provide it, it must be inlinable
|
||||
Perl code which provides a <function>num2text</function> sub. If
|
||||
an <function>init</function> sub exists it will be executed
|
||||
first.</para>
|
||||
<para>Only used in the check and receipt printing module.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>special_chars</term>
|
||||
<listitem>
|
||||
5fa26f9a | Moritz Bunkus | <para>kivitendo comes with a lot of interfaces to different
|
||
7ee506b3 | Moritz Bunkus | formats, some of which are rather picky with their accepted
|
||
charset. The <filename>special_chars</filename> file contains a
|
||||
listing of chars not suited for different file format and
|
||||
provides substitutions. It is written in "Simple Ini" style,
|
||||
containing a block for every file format.</para>
|
||||
<para>First entry should be the order of substitution for
|
||||
entries as a whitespace separated list. All entries are
|
||||
interpolated, so <literal>\n</literal>, <literal>\x20</literal>
|
||||
and <literal>\\</literal> all work.</para>
|
||||
<para>After that every entry is a special char that should be
|
||||
translated when writing text into such a file.</para>
|
||||
<para>Example:</para>
|
||||
<programlisting>[Template/XML]
|
||||
order=& < > \n
|
||||
&=&amp;
|
||||
<=&lt;
|
||||
>=&gt;
|
||||
\n=<br></programlisting>
|
||||
<para>Note the importance of the order in this example.
|
||||
Substituting < and > befor & would lead to $gt; become
|
||||
&amp;gt;</para>
|
||||
<para>For a list of valid formats, see the German
|
||||
<filename>special_chars</filename> entry. As of this writing the
|
||||
following are recognized:</para>
|
||||
<programlisting>HTML
|
||||
URL@HTML
|
||||
Template/HTML
|
||||
Template/XML
|
||||
Template/LaTeX
|
||||
Template/OpenDocument
|
||||
filenames</programlisting>
|
||||
<para>The last of which is very machine dependant. Remember that
|
||||
a lot of characters are forbidden by some filesystems, for
|
||||
3c82848b | Geoffrey Richardson | example MS Windows doesn't like ':' in its files where Linux
|
||
7ee506b3 | Moritz Bunkus | doesn't mind that. If you want the files created with your
|
||
language pack to be portable, find all chars that could cause
|
||||
trouble.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>missing</term>
|
||||
<listitem>
|
||||
<para>This file is not a part of the language package
|
||||
itself.</para>
|
||||
<para>This is a file generated by
|
||||
<command>scripts/locales.pl</command> while processing your
|
||||
locales. It's only to have the missing entries singled out and
|
||||
does not belong to a language package.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term>lost</term>
|
||||
<listitem>
|
||||
<para>This file is not a part of the language package
|
||||
itself.</para>
|
||||
<para>Another file generated by
|
||||
<command>scripts/locales.pl</command>. If for any reason a
|
||||
translation does not appear anymore and can be deleted, it gets
|
||||
moved here. The last 50 or so entries deleted are saved here in
|
||||
case you made a typo, so that you don't have to translate
|
||||
everything again. If a tranlsation is missing, the lost file is
|
||||
checked first. If you maintain a language package, you might
|
||||
want to keep this safe somewhere.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
0e14ae06 | Andreas Zenklusen | |||
8041f98c | Jan Büren | <varlistentry>
|
||
<term>more/all</term>
|
||||
<listitem>
|
||||
<para>This subdir and file is not a part of the language package
|
||||
itself.</para>
|
||||
0e14ae06 | Andreas Zenklusen | <para>If the directory more exists and contains a file called
|
||
all it will be parsed in addition to the mandatory all (see
|
||||
above). The file is useful if you want to change some
|
||||
translations for the current installation without conflicting
|
||||
further upgrades. The file is not autogenerated and has the same
|
||||
format as the all, but needs another key (more_texts). See the
|
||||
german translation for an example or copy the following code:
|
||||
8041f98c | Jan Büren | <programlisting>
|
||
#!/usr/bin/perl
|
||||
# -*- coding: utf-8; -*-
|
||||
# vim: fenc=utf-8
|
||||
use utf8;
|
||||
# These are additional texts for custom translations.
|
||||
# The format is the same as for the normal file all, only
|
||||
# with another key (more_texts instead of texts).
|
||||
0e14ae06 | Andreas Zenklusen | # The file has the form of 'english text' => 'foreign text',
|
||
8041f98c | Jan Büren | |||
0e14ae06 | Andreas Zenklusen | $self->{more_texts} = {
|
||
8041f98c | Jan Büren | |||
0e14ae06 | Andreas Zenklusen | 'Ship via' => 'Terms of delivery',
|
||
'Shipping Point' => 'Delivery time',
|
||||
8041f98c | Jan Büren | }
|
||
0e14ae06 | Andreas Zenklusen | </programlisting></para>
|
||
8041f98c | Jan Büren | </listitem>
|
||
</varlistentry>
|
||||
7ee506b3 | Moritz Bunkus | </variablelist>
|
||
</sect2>
|
||||
90baed86 | Moritz Bunkus | </sect1>
|
||
7ee506b3 | Moritz Bunkus | |||
d1564e8a | Moritz Bunkus | <sect1 id="devel.testsuite">
|
||
<title>Die kivitendo-Test-Suite</title>
|
||||
<sect2 id="devel.testsuite.intro">
|
||||
<title>Einführung</title>
|
||||
0e14ae06 | Andreas Zenklusen | <para>kivitendo enthält eine Suite für automatisierte Tests. Sie
|
||
basiert auf dem Standard-Perl-Modul
|
||||
<literal>Test::More</literal>.</para>
|
||||
d1564e8a | Moritz Bunkus | |||
<para>Die grundlegenden Fakten sind:</para>
|
||||
<itemizedlist>
|
||||
0e14ae06 | Andreas Zenklusen | <listitem>
|
||
<para>Alle Tests liegen im Unterverzeichnis
|
||||
<filename>t/</filename>.</para>
|
||||
</listitem>
|
||||
d1564e8a | Moritz Bunkus | |||
0e14ae06 | Andreas Zenklusen | <listitem>
|
||
<para>Ein Script (bzw. ein Test) in <filename>t/</filename>
|
||||
enthält einen oder mehrere Testfälle.</para>
|
||||
</listitem>
|
||||
d1564e8a | Moritz Bunkus | |||
0e14ae06 | Andreas Zenklusen | <listitem>
|
||
<para>Alle Dateinamen von Tests enden auf <literal>.t</literal>.
|
||||
Es sind selbstständig ausführbare Perl-Scripte.</para>
|
||||
</listitem>
|
||||
d1564e8a | Moritz Bunkus | |||
0e14ae06 | Andreas Zenklusen | <listitem>
|
||
<para>Die Test-Suite besteht aus der Gesamtheit aller Tests,
|
||||
sprich aller Scripte in <filename>t/</filename>, deren Dateiname
|
||||
auf <literal>.t</literal> endet.</para>
|
||||
</listitem>
|
||||
d1564e8a | Moritz Bunkus | </itemizedlist>
|
||
</sect2>
|
||||
<sect2 id="devel.testsuite.prerequisites">
|
||||
<title>Voraussetzungen</title>
|
||||
0e14ae06 | Andreas Zenklusen | <para>Für die Ausführung werden neben den für kivitendo eh schon
|
||
benötigten Module noch weitere Perl-Module benötigt. Diese
|
||||
sind:</para>
|
||||
d1564e8a | Moritz Bunkus | |||
<itemizedlist>
|
||||
0e14ae06 | Andreas Zenklusen | <listitem>
|
||
<para><literal>Test::Deep</literal> (Debian-Paketname:
|
||||
<literal>libtest-deep-perl</literal>; Fedora:
|
||||
<literal>perl-Test-Deep</literal>; openSUSE:
|
||||
<literal>perl-Test-Deep</literal>)</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para><literal>Test::Exception</literal> (Debian-Paketname:
|
||||
<literal>libtest-exception-perl</literal>; Fedora:
|
||||
<literal>perl-Test-Exception</literal>; openSUSE:
|
||||
<literal>perl-Test-Exception</literal>)</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para><literal>Test::Output</literal> (Debian-Paketname:
|
||||
<literal>libtest-output-perl</literal>; Fedora:
|
||||
<literal>perl-Test-Output</literal>; openSUSE:
|
||||
<literal>perl-Test-Output</literal>)</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para><literal>Test::Harness</literal> 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 <ulink
|
||||
url="http://www.cpan.org">CPAN</ulink> bezogen werden.</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para><literal>LWP::Simple</literal> aus dem Paket
|
||||
<literal>libwww-perl</literal> (Debian-Panetname:
|
||||
<literal>libwww-perl</literal>; Fedora:
|
||||
<literal>perl-libwww-perl</literal>; openSUSE:
|
||||
<literal>perl-libwww-perl</literal>)</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para><literal>URI::Find</literal> (Debian-Panetname:
|
||||
<literal>liburi-find-perl</literal>; Fedora:
|
||||
<literal>perl-URI-Find</literal>; openSUSE:
|
||||
<literal>perl-URI-Find</literal>)</para>
|
||||
</listitem>
|
||||
19f08831 | Moritz Bunkus | |||
<listitem>
|
||||
<para><literal>Sys::CPU</literal> (Debian-Panetname: <literal>libsys-cpu-perl</literal>; Fedora und openSUSE: nicht
|
||||
vorhanden)</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para><literal>Thread::Pool::Simple</literal> (Debian-Panetname: <literal>libthread-pool-simple-perl</literal>; Fedora und
|
||||
openSUSE: nicht vorhanden)</para>
|
||||
</listitem>
|
||||
d1564e8a | Moritz Bunkus | </itemizedlist>
|
||
d5d805a7 | Moritz Bunkus | |||
0e14ae06 | Andreas Zenklusen | <para>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
|
||||
<literal>testing/database</literal> Datenbankverbindungsparameter
|
||||
angegeben werden. Der hier angegebene Benutzer muss weiterhin das
|
||||
Recht haben, Datenbanken anzulegen und zu löschen.</para>
|
||||
d1564e8a | Moritz Bunkus | </sect2>
|
||
<sect2 id="devel.testsuite.execution">
|
||||
0e14ae06 | Andreas Zenklusen | <title>Existierende Tests ausführen</title>
|
||
d1564e8a | Moritz Bunkus | |||
0e14ae06 | Andreas Zenklusen | <para>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
|
||||
<filename>t/test.pl</filename>.</para>
|
||||
d1564e8a | Moritz Bunkus | |||
0e14ae06 | Andreas Zenklusen | <para>Will man die komplette Test-Suite ausführen, so muss man einfach
|
||
nur <filename>t/test.pl</filename> ohne weitere Parameter aus dem
|
||||
kivitendo-Basisverzeichnis heraus ausführen.</para>
|
||||
d1564e8a | Moritz Bunkus | |||
0e14ae06 | Andreas Zenklusen | <para>Um einzelne Test-Scripte auszuführen, übergibt man deren Namen
|
||
an <filename>t/test.pl</filename>. Beispielsweise:</para>
|
||||
d1564e8a | Moritz Bunkus | |||
d5d805a7 | Moritz Bunkus | <programlisting>t/test.pl t/form/format_amount.t t/background_job/known_jobs.t</programlisting>
|
||
d1564e8a | Moritz Bunkus | </sect2>
|
||
<sect2 id="devel.testsuite.meaning_of_scripts">
|
||||
0e14ae06 | Andreas Zenklusen | <title>Bedeutung der verschiedenen Test-Scripte</title>
|
||
d1564e8a | Moritz Bunkus | |||
0e14ae06 | Andreas Zenklusen | <para>Die Test-Suite umfasst Tests sowohl für Funktionen als auch für
|
||
Programmierstil. Einige besonders zu erwähnende, weil auch während der
|
||||
Entwicklung nützliche Tests sind:</para>
|
||||
d1564e8a | Moritz Bunkus | |||
<itemizedlist>
|
||||
0e14ae06 | Andreas Zenklusen | <listitem>
|
||
<para><filename>t/001compile.t</filename> -- compiliert alle
|
||||
Quelldateien und bricht bei Fehlern sofort ab</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para><filename>t/002goodperl.t</filename> -- überprüft alle
|
||||
Perl-Dateien auf Anwesenheit von '<literal>use
|
||||
strict</literal>'-Anweisungen</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para><filename>t/003safesys.t</filename> -- überprüft Aufrufe von
|
||||
<function>system()</function> und <function>exec()</function> auf
|
||||
Gültigkeit</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para><filename>t/005no_tabs.t</filename> -- überprüft, ob Dateien
|
||||
Tab-Zeichen enthalten</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para><filename>t/006spelling.t</filename> -- sucht nach häufigen
|
||||
Rechtschreibfehlern</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para><filename>t/011pod.t</filename> -- überprüft die Syntax von
|
||||
Dokumentation im POD-Format auf Gültigkeit</para>
|
||||
</listitem>
|
||||
d1564e8a | Moritz Bunkus | </itemizedlist>
|
||
0e14ae06 | Andreas Zenklusen | <para>Weitere Test-Scripte überprüfen primär die Funktionsweise
|
||
einzelner Funktionen und Module.</para>
|
||||
d1564e8a | Moritz Bunkus | </sect2>
|
||
<sect2 id="devel.testsuite.create_new">
|
||||
0e14ae06 | Andreas Zenklusen | <title>Neue Test-Scripte erstellen</title>
|
||
d1564e8a | Moritz Bunkus | |||
0e14ae06 | Andreas Zenklusen | <para>Es wird sehr gern gesehen, wenn neue Funktionalität auch gleich
|
||
mit einem Test-Script abgesichert wird. Auch bestehende Funktion darf
|
||||
und soll ausdrücklich nachträglich mit Test-Scripten abgesichert
|
||||
werden.</para>
|
||||
d1564e8a | Moritz Bunkus | |||
<sect3 id="devel.testsuite.ideas_for_non_function_tests">
|
||||
0e14ae06 | Andreas Zenklusen | <title>Ideen für neue Test-Scripte, die keine konkreten Funktionen
|
||
testen</title>
|
||||
d1564e8a | Moritz Bunkus | |||
0e14ae06 | Andreas Zenklusen | <para>Ideen, die abgesehen von Funktionen noch nicht umgesetzt
|
||
wurden:</para>
|
||||
d1564e8a | Moritz Bunkus | |||
<itemizedlist>
|
||||
0e14ae06 | Andreas Zenklusen | <listitem>
|
||
<para>Überprüfung auf fehlende symbolische Links</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>Suche nach Nicht-ASCII-Zeichen in Perl-Code-Dateien (mit
|
||||
gewissen Einschränkungen wie das Erlauben von deutschen
|
||||
Umlauten)</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>Test auf DOS-Zeilenenden (\r\n anstelle von nur \n)</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>Überprüfung auf Leerzeichen am Ende von Zeilen</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>Test, ob alle zu übersetzenden Strings in
|
||||
<filename>locale/de/all</filename> vorhanden sind</para>
|
||||
</listitem>
|
||||
<listitem>
|
||||
<para>Test, ob alle Webseiten-Templates in
|
||||
<filename>templates/webpages</filename> mit vom Perl-Modul
|
||||
<literal>Template</literal> compiliert werden können</para>
|
||||
</listitem>
|
||||
d1564e8a | Moritz Bunkus | </itemizedlist>
|
||
</sect3>
|
||||
<sect3 id="devel.testsuite.directory_and_test_names">
|
||||
0e14ae06 | Andreas Zenklusen | <title>Konvention für Verzeichnis- und Dateinamen</title>
|
||
d1564e8a | Moritz Bunkus | |||
0e14ae06 | Andreas Zenklusen | <para>Es gibt momentan eine wenige Richtlinien, wie Test-Scripte zu
|
||
benennen sind. Bitte die folgenden Punkte als Richtlinie betrachten
|
||||
und ihnen soweit es geht folgen:</para>
|
||||
d1564e8a | Moritz Bunkus | |||
<itemizedlist>
|
||||
0e14ae06 | Andreas Zenklusen | <listitem>
|
||
<para>Die Dateiendung muss <filename>.t</filename>
|
||||
lauten.</para>
|
||||
</listitem>
|
||||
d1564e8a | Moritz Bunkus | |||
0e14ae06 | Andreas Zenklusen | <listitem>
|
||
<para>Namen sind englisch, komplett klein geschrieben und
|
||||
einzelne Wörter mit Unterstrichten getrennt (beispielsweise
|
||||
<filename>bad_function_params.t</filename>).</para>
|
||||
</listitem>
|
||||
d1564e8a | Moritz Bunkus | |||
0e14ae06 | Andreas Zenklusen | <listitem>
|
||
<para>Unterverzeichnisse sollten grob nach dem Themenbereich
|
||||
benannt sein, mit dem sich die Scripte darin befassen
|
||||
(beispielsweise <filename>background_jobs</filename> für Tests
|
||||
rund um Hintergrund-Jobs).</para>
|
||||
</listitem>
|
||||
d1564e8a | Moritz Bunkus | |||
0e14ae06 | Andreas Zenklusen | <listitem>
|
||
<para>Test-Scripte sollten einen überschaubaren Bereich von
|
||||
Funktionalität testen, der logisch zusammenhängend ist (z.B. nur
|
||||
Tests für eine einzelne Funktion in einem Modul). Lieber mehrere
|
||||
Test-Scripte schreiben.</para>
|
||||
</listitem>
|
||||
d1564e8a | Moritz Bunkus | </itemizedlist>
|
||
</sect3>
|
||||
<sect3 id="devel.testsuite.minimal_example">
|
||||
0e14ae06 | Andreas Zenklusen | <title>Minimales Skelett für eigene Scripte</title>
|
||
d1564e8a | Moritz Bunkus | |||
0e14ae06 | Andreas Zenklusen | <para>Der folgenden Programmcode enthält das kleinstmögliche
|
||
Testscript und kann als Ausgangspunkt für eigene Tests verwendet
|
||||
werden:</para>
|
||||
d1564e8a | Moritz Bunkus | |||
<programlisting>use Test::More tests => 0;
|
||||
use lib 't';
|
||||
use Support::TestSetup;
|
||||
Support::TestSetup::login();</programlisting>
|
||||
0e14ae06 | Andreas Zenklusen | <para>Wird eine vollständig initialisierte kivitendo-Umgebung
|
||
benötigt (Stichwort: alle globalen Variablen wie
|
||||
<varname>$::auth</varname>, <varname>$::form</varname> oder
|
||||
<varname>$::lxdebug</varname>), so muss in der Konfigurationsdatei
|
||||
<filename>config/kivitendo.conf</filename> im Abschnitt
|
||||
<literal>testing.login</literal> ein gültiger Login-Name eingetragen
|
||||
d1564e8a | Moritz Bunkus | sein. Dieser wird für die Datenbankverbindung benötigt.</para>
|
||
0e14ae06 | Andreas Zenklusen | <para>Wir keine vollständig initialisierte Umgebung benötigt, so
|
||
f2e8209c | Martin Helmling | kann die letzte Zeile <programlisting>Support::TestSetup::login();</programlisting>
|
||
0e14ae06 | Andreas Zenklusen | weggelassen werden, was die Ausführungszeit des Scripts leicht
|
||
verringert.</para>
|
||||
d1564e8a | Moritz Bunkus | </sect3>
|
||
</sect2>
|
||||
</sect1>
|
||||
3adb0cb7 | Moritz Bunkus | <sect1 id="devel.style-guide">
|
||
90baed86 | Moritz Bunkus | <title>Stil-Richtlinien</title>
|
||
7ee506b3 | Moritz Bunkus | |||
3adb0cb7 | Moritz Bunkus | <para>Die folgenden Regeln haben das Ziel, den Code möglichst gut les-
|
||
und wartbar zu machen. Dazu gehört zum Einen, dass der Code einheitlich
|
||||
eingerückt ist, aber auch, dass Mehrdeutigkeit so weit es geht vermieden
|
||||
wird (Stichworte "Klammern" oder "Hash-Keys").</para>
|
||||
7ee506b3 | Moritz Bunkus | |||
3adb0cb7 | Moritz Bunkus | <para>Diese Regeln sind keine Schikane sondern erleichtern allen das
|
||
Leben!</para>
|
||||
7ee506b3 | Moritz Bunkus | |||
3adb0cb7 | Moritz Bunkus | <para>Jeder, der einen Patch schickt, sollte seinen Code vorher
|
||
überprüfen. Einige der Regeln lassen sich automatisch überprüfen, andere
|
||||
nicht.</para>
|
||||
7ee506b3 | Moritz Bunkus | |||
90baed86 | Moritz Bunkus | <orderedlist>
|
||
3adb0cb7 | Moritz Bunkus | <listitem>
|
||
<para>Es werden keine echten Tabs sondern Leerzeichen
|
||||
verwendet.</para>
|
||||
</listitem>
|
||||
7ee506b3 | Moritz Bunkus | |||
3adb0cb7 | Moritz Bunkus | <listitem>
|
||
<para>Die Einrückung beträgt zwei Leerzeichen. Beispiel:</para>
|
||||
7ee506b3 | Moritz Bunkus | |||
3adb0cb7 | Moritz Bunkus | <programlisting>foreach my $row (@data) {
|
||
7ee506b3 | Moritz Bunkus | if ($flag) {
|
||
# do something with $row
|
||||
}
|
||||
if ($use_modules) {
|
||||
$row->{modules} = MODULE->retrieve(
|
||||
id => $row->{id},
|
||||
date => $use_now ? localtime() : $row->{time},
|
||||
);
|
||||
}
|
||||
$report->add($row);
|
||||
}</programlisting>
|
||||
3adb0cb7 | Moritz Bunkus | </listitem>
|
||
7ee506b3 | Moritz Bunkus | |||
3adb0cb7 | Moritz Bunkus | <listitem>
|
||
<para>Öffnende geschweifte Klammern befinden sich auf der gleichen
|
||||
Zeile wie der letzte Befehl. Beispiele:</para>
|
||||
7ee506b3 | Moritz Bunkus | |||
3adb0cb7 | Moritz Bunkus | <programlisting>sub debug {
|
||
7ee506b3 | Moritz Bunkus | ...
|
||
}</programlisting>
|
||||
3adb0cb7 | Moritz Bunkus | <para>oder</para>
|
||
7ee506b3 | Moritz Bunkus | |||
3adb0cb7 | Moritz Bunkus | <programlisting>if ($form->{item_rows} > 0) {
|
||
7ee506b3 | Moritz Bunkus | ...
|
||
}</programlisting>
|
||||
3adb0cb7 | Moritz Bunkus | </listitem>
|
||
7ee506b3 | Moritz Bunkus | |||
3adb0cb7 | Moritz Bunkus | <listitem>
|
||
<para>Schließende geschweifte Klammern sind so weit eingerückt wie
|
||||
der Befehl / die öffnende schließende Klammer, die den Block
|
||||
gestartet hat, und nicht auf der Ebene des Inhalts. Die gleichen
|
||||
Beispiele wie bei 3. gelten.</para>
|
||||
</listitem>
|
||||
7ee506b3 | Moritz Bunkus | |||
3adb0cb7 | Moritz Bunkus | <listitem>
|
||
<para>Die Wörter "<function>else</function>",
|
||||
"<function>elsif</function>", "<function>while</function>" befinden
|
||||
sich auf der gleichen Zeile wie schließende geschweifte Klammern.
|
||||
Beispiele:</para>
|
||||
7ee506b3 | Moritz Bunkus | |||
3adb0cb7 | Moritz Bunkus | <programlisting>if ($form->{sum} > 1000) {
|
||
7ee506b3 | Moritz Bunkus | ...
|
||
} elsif ($form->{sum} > 0) {
|
||||
...
|
||||
} else {
|
||||
...
|
||||
}
|
||||
do {
|
||||
...
|
||||
} until ($a > 0);</programlisting>
|
||||
3adb0cb7 | Moritz Bunkus | </listitem>
|
||
7ee506b3 | Moritz Bunkus | |||
3adb0cb7 | Moritz Bunkus | <listitem>
|
||
<para>Parameter von Funktionsaufrufen müssen mit runden Klammern
|
||||
versehen werden. Davon nicht betroffen sind interne Perl-Funktionen,
|
||||
und grep-ähnliche Operatoren. Beispiel:</para>
|
||||
7ee506b3 | Moritz Bunkus | |||
3adb0cb7 | Moritz Bunkus | <programlisting>$main::lxdebug->message("Could not find file.");
|
||
7ee506b3 | Moritz Bunkus | %options = map { $_ => 1 } grep { !/^#/ } @config_file;</programlisting>
|
||
3adb0cb7 | Moritz Bunkus | </listitem>
|
||
7ee506b3 | Moritz Bunkus | |||
3adb0cb7 | Moritz Bunkus | <listitem>
|
||
<para>Verschiedene Klammern, Ihre Ausdrücke und Leerzeichen:</para>
|
||||
7ee506b3 | Moritz Bunkus | |||
3adb0cb7 | Moritz Bunkus | <para>Generell gilt: Hashkeys und Arrayindices sollten nicht durch
|
||
Leerzeichen abgesetzt werden. Logische Klammerungen ebensowenig,
|
||||
Blöcke schon. Beispiel:</para>
|
||||
7ee506b3 | Moritz Bunkus | |||
3adb0cb7 | Moritz Bunkus | <programlisting>if (($form->{debug} == 1) && ($form->{sum} - 100 < 0)) {
|
||
7ee506b3 | Moritz Bunkus | ...
|
||
}
|
||||
$array[$i + 1] = 4;
|
||||
3adb0cb7 | Moritz Bunkus | $form->{sum} += $form->{"row_$i"};
|
||
7ee506b3 | Moritz Bunkus | $form->{ $form->{index} } += 1;
|
||
3adb0cb7 | Moritz Bunkus | map { $form->{sum} += $form->{"row_$_"} } 1..$rowcount;</programlisting>
|
||
</listitem>
|
||||
7ee506b3 | Moritz Bunkus | |||
3adb0cb7 | Moritz Bunkus | <listitem>
|
||
<para>Mehrzeilige Befehle</para>
|
||||
7ee506b3 | Moritz Bunkus | |||
3adb0cb7 | Moritz Bunkus | <orderedlist>
|
||
<listitem>
|
||||
<para>Werden die Parameter eines Funktionsaufrufes auf mehrere
|
||||
Zeilen aufgeteilt, so sollten diese bis zu der Spalte eingerückt
|
||||
werden, in der die ersten Funktionsparameter in der ersten Zeile
|
||||
stehen. Beispiel:</para>
|
||||
7ee506b3 | Moritz Bunkus | |||
3adb0cb7 | Moritz Bunkus | <programlisting>$sth = $dbh->prepare("SELECT * FROM some_table WHERE col = ?",
|
||
90baed86 | Moritz Bunkus | $form->{some_col_value});</programlisting>
|
||
3adb0cb7 | Moritz Bunkus | </listitem>
|
||
7ee506b3 | Moritz Bunkus | |||
3adb0cb7 | Moritz Bunkus | <listitem>
|
||
3c82848b | Geoffrey Richardson | <para>Ein Spezialfall ist der ternäre Operator "?:", der am
|
||
3adb0cb7 | Moritz Bunkus | besten in einer übersichtlichen Tabellenstruktur organisiert
|
||
wird. Beispiel:</para>
|
||||
7ee506b3 | Moritz Bunkus | |||
3adb0cb7 | Moritz Bunkus | <programlisting>my $rowcount = $form->{"row_$i"} ? $i
|
||
7ee506b3 | Moritz Bunkus | : $form->{oldcount} ? $form->{oldcount} + 1
|
||
: $form->{rowcount} - $form->{rowbase};</programlisting>
|
||||
3adb0cb7 | Moritz Bunkus | </listitem>
|
||
</orderedlist>
|
||||
</listitem>
|
||||
7ee506b3 | Moritz Bunkus | |||
3adb0cb7 | Moritz Bunkus | <listitem>
|
||
<para>Kommentare</para>
|
||||
7ee506b3 | Moritz Bunkus | |||
3adb0cb7 | Moritz Bunkus | <orderedlist>
|
||
<listitem>
|
||||
<para>Kommentare, die alleine in einer Zeile stehen, sollten
|
||||
soweit wie der Code eingerückt sein.</para>
|
||||
</listitem>
|
||||
7ee506b3 | Moritz Bunkus | |||
3adb0cb7 | Moritz Bunkus | <listitem>
|
||
<para>Seitliche hängende Kommentare sollten einheitlich
|
||||
formatiert werden.</para>
|
||||
</listitem>
|
||||
7ee506b3 | Moritz Bunkus | |||
3adb0cb7 | Moritz Bunkus | <listitem>
|
||
<para>Sämtliche Kommentare und Sonstiges im Quellcode ist bitte
|
||||
auf Englisch zu verfassen. So wie ich keine Lust habe,
|
||||
5fa26f9a | Moritz Bunkus | französischen Quelltext zu lesen, sollte auch der kivitendo
|
||
3adb0cb7 | Moritz Bunkus | Quelltext für nicht-Deutschsprachige lesbar sein.
|
||
Beispiel:</para>
|
||||
7ee506b3 | Moritz Bunkus | |||
3adb0cb7 | Moritz Bunkus | <programlisting>my $found = 0;
|
||
7ee506b3 | Moritz Bunkus | while (1) {
|
||
last if $found;
|
||||
# complicated check
|
||||
$found = 1 if //
|
||||
}
|
||||
90baed86 | Moritz Bunkus | $i = 0 # initialize $i
|
||
$n = $i; # save $i
|
||||
7ee506b3 | Moritz Bunkus | $i *= $const; # do something crazy
|
||
90baed86 | Moritz Bunkus | $i = $n; # recover $i</programlisting>
|
||
3adb0cb7 | Moritz Bunkus | </listitem>
|
||
</orderedlist>
|
||||
</listitem>
|
||||
7ee506b3 | Moritz Bunkus | |||
3adb0cb7 | Moritz Bunkus | <listitem>
|
||
<para>Hashkeys sollten nur in Anführungszeichen stehen, wenn die
|
||||
Interpolation gewünscht ist. Beispiel:</para>
|
||||
7ee506b3 | Moritz Bunkus | |||
3adb0cb7 | Moritz Bunkus | <programlisting>$form->{sum} = 0;
|
||
$form->{"row_$i"} = $form->{"row_$i"} - 5;
|
||||
7ee506b3 | Moritz Bunkus | $some_hash{42} = 54;</programlisting>
|
||
3adb0cb7 | Moritz Bunkus | </listitem>
|
||
7ee506b3 | Moritz Bunkus | |||
3adb0cb7 | Moritz Bunkus | <listitem>
|
||
<para>Die maximale Zeilenlänge ist nicht beschränkt. Zeilenlängen
|
||||
unterhalb von 79 Zeichen helfen unter bestimmten Bedingungen, aber
|
||||
wenn die Lesbarkeit unter kurzen Zeilen leidet (wie zum Biespiel in
|
||||
grossen Tabellen), dann ist Lesbarkeit vorzuziehen.</para>
|
||||
<para>Als Beispiel sei die Funktion
|
||||
<function>print_options</function> aus
|
||||
<filename>bin/mozilla/io.pl</filename> angeführt.</para>
|
||||
</listitem>
|
||||
7ee506b3 | Moritz Bunkus | |||
3adb0cb7 | Moritz Bunkus | <listitem>
|
||
<para>Trailing Whitespace, d.h. Leerzeichen am Ende von Zeilen sind
|
||||
unerwünscht. Sie führen zu unnötigen Whitespaceänderungen, die diffs
|
||||
verfälschen.</para>
|
||||
<para>Emacs und vim haben beide recht einfache Methoden zur
|
||||
Entfernung von trailing whitespace. Emacs kennt das Kommande
|
||||
<command>nuke-trailing-whitespace</command>, vim macht das gleiche
|
||||
manuell über <literal>:%s/\s\+$//e</literal> Mit <literal>:au
|
||||
BufWritePre * :%s/\s\+$//e</literal> wird das an Speichern
|
||||
gebunden.</para>
|
||||
</listitem>
|
||||
7ee506b3 | Moritz Bunkus | |||
3adb0cb7 | Moritz Bunkus | <listitem>
|
||
<para>Es wird kein <command>perltidy</command> verwendet.</para>
|
||||
<para>In der Vergangenheit wurde versucht,
|
||||
<command>perltidy</command> zu verwenden, um einen einheitlichen
|
||||
Stil zu erlangen. Es hat sich aber gezeigt, dass
|
||||
<command>perltidy</command>s sehr eigenwilliges Verhalten, was
|
||||
Zeilenumbrüche angeht, oftmals gut formatierten Code zerstört. Für
|
||||
den Interessierten sind hier die
|
||||
<command>perltidy</command>-Optionen, die grob den beschriebenen
|
||||
Richtlinien entsprechen:</para>
|
||||
<programlisting>-syn -i=2 -nt -pt=2 -sbt=2 -ci=2 -ibc -hsc -noll -nsts -nsfs -asc -dsm
|
||||
7ee506b3 | Moritz Bunkus | -aws -bbc -bbs -bbb -mbl=1 -nsob -ce -nbl -nsbl -cti=0 -bbt=0 -bar -l=79
|
||
-lp -vt=1 -vtc=1</programlisting>
|
||||
3adb0cb7 | Moritz Bunkus | </listitem>
|
||
7ee506b3 | Moritz Bunkus | |||
3adb0cb7 | Moritz Bunkus | <listitem>
|
||
<para><varname>STDERR</varname> ist tabu. Unkonditionale
|
||||
Debugmeldungen auch.</para>
|
||||
5fa26f9a | Moritz Bunkus | <para>kivitendo bietet mit dem Modul <classname>LXDebug</classname>
|
||
3adb0cb7 | Moritz Bunkus | einen brauchbaren Trace-/Debug-Mechanismus. Es gibt also keinen
|
||
Grund, nach <varname>STDERR</varname> zu schreiben.</para>
|
||||
<para>Die <classname>LXDebug</classname>-Methode
|
||||
"<function>message</function>" nimmt als ersten Paramter außerdem
|
||||
eine Flagmaske, für die die Meldung angezeigt wird, wobei "0" immer
|
||||
angezeigt wird. Solche Meldungen sollten nicht eingecheckt werden
|
||||
und werden in den meisten Fällen auch vom Repository
|
||||
zurückgewiesen.</para>
|
||||
</listitem>
|
||||
7ee506b3 | Moritz Bunkus | |||
3adb0cb7 | Moritz Bunkus | <listitem>
|
||
<para>Alle neuen Module müssen use strict verwenden.</para>
|
||||
7ee506b3 | Moritz Bunkus | |||
3adb0cb7 | Moritz Bunkus | <para><varname>$form</varname>, <varname>$auth</varname>,
|
||
<varname>$locale</varname>, <varname>$lxdebug</varname> und
|
||||
<varname>%myconfig</varname> werden derzeit aus dem main package
|
||||
0e14ae06 | Andreas Zenklusen | importiert (siehe <xref linkend="devel.globals"/>. Alle anderen
|
||
3adb0cb7 | Moritz Bunkus | Konstrukte sollten lexikalisch lokal gehalten werden.</para>
|
||
</listitem>
|
||||
90baed86 | Moritz Bunkus | </orderedlist>
|
||
7ee506b3 | Moritz Bunkus | </sect1>
|
||
27f054b7 | Moritz Bunkus | |||
<sect1 id="devel.build-doc" xreflabel="Dokumentation erstellen">
|
||||
3adb0cb7 | Moritz Bunkus | <title>Dokumentation erstellen</title>
|
||
27f054b7 | Moritz Bunkus | |||
3adb0cb7 | Moritz Bunkus | <sect2 id="devel.build-doc.introduction">
|
||
<title>Einführung</title>
|
||||
27f054b7 | Moritz Bunkus | |||
3adb0cb7 | Moritz Bunkus | <para>Diese Dokumentation ist in <productname>DocBook</productname>
|
||
XML geschrieben. Zum Bearbeiten reicht grundsätzlich ein Text-Editor.
|
||||
Mehr Komfort bekommt man, wenn man einen dedizierten XML-fähigen
|
||||
Editor nutzt, der spezielle Unterstützung für
|
||||
<productname>DocBook</productname> mitbringt. Wir empfehlen dafür den
|
||||
<ulink url="http://www.xmlmind.com/xmleditor/">XMLmind XML
|
||||
Editor</ulink>, der bei nicht kommerzieller Nutzung kostenlos
|
||||
ist.</para>
|
||||
</sect2>
|
||||
27f054b7 | Moritz Bunkus | |||
3adb0cb7 | Moritz Bunkus | <sect2 id="devel.build-doc.required-software">
|
||
<title>Benötigte Software</title>
|
||||
27f054b7 | Moritz Bunkus | |||
3adb0cb7 | Moritz Bunkus | <para>Bei <productname>DocBook</productname> ist Prinzip, dass
|
||
ausschließlich die XML-Quelldatei bearbeitet wird. Aus dieser werden
|
||||
dann mit entsprechenden Stylesheets andere Formate wie PDF oder HTML
|
||||
5fa26f9a | Moritz Bunkus | erzeugt. Bei kivitendo übernimmt diese Aufgabe das Shell-Script
|
||
3adb0cb7 | Moritz Bunkus | <command>scripts/build_doc.sh</command>.</para>
|
||
27f054b7 | Moritz Bunkus | |||
3adb0cb7 | Moritz Bunkus | <para>Das Script benötigt zur Konvertierung verschiedene
|
||
5fa26f9a | Moritz Bunkus | Softwarekomponenten, die im normalen kivitendo-Betrieb nicht benötigt
|
||
3adb0cb7 | Moritz Bunkus | werden:</para>
|
||
27f054b7 | Moritz Bunkus | |||
3adb0cb7 | Moritz Bunkus | <itemizedlist>
|
||
<listitem>
|
||||
<para><ulink
|
||||
url="http://www.oracle.com/technetwork/java/index.html">Java</ulink>
|
||||
in einer halbwegs aktuellen Version</para>
|
||||
</listitem>
|
||||
27f054b7 | Moritz Bunkus | |||
3adb0cb7 | Moritz Bunkus | <listitem>
|
||
<para>Das Java-Build-System <ulink
|
||||
url="http://ant.apache.org/">Apache Ant</ulink></para>
|
||||
</listitem>
|
||||
27f054b7 | Moritz Bunkus | |||
3adb0cb7 | Moritz Bunkus | <listitem>
|
||
<para>Das Dokumentations-System Dobudish für
|
||||
<productname>DocBook</productname> 4.5, eine Zusammenstellung
|
||||
diverser Stylesheets und Grafiken zur Konvertierung von
|
||||
<productname>DocBook</productname> XML in andere Formate. Das
|
||||
Paket, das benötigt wird, ist zum Zeitpunkt der
|
||||
Dokumentationserstellung
|
||||
<filename>dobudish-nojre-1.1.4.zip</filename>, aus auf <ulink
|
||||
url="http://code.google.com/p/dobudish/downloads/list">code.google.com</ulink>
|
||||
bereitsteht.</para>
|
||||
</listitem>
|
||||
</itemizedlist>
|
||||
27f054b7 | Moritz Bunkus | |||
3adb0cb7 | Moritz Bunkus | <para>Apache Ant sowie ein dazu passendes Java Runtime Environment
|
||
sind auf allen gängigen Plattformen verfügbar. Beispiel für
|
||||
Debian/Ubuntu:</para>
|
||||
27f054b7 | Moritz Bunkus | |||
3adb0cb7 | Moritz Bunkus | <programlisting>apt-get install ant openjdk-7-jre</programlisting>
|
||
27f054b7 | Moritz Bunkus | |||
3adb0cb7 | Moritz Bunkus | <para>Nach dem Download von Dobudish muss Dobudish im Unterverzeichnis
|
||
<filename>doc/build</filename> entpackt werden. Beispiel unter der
|
||||
Annahme, das <productname>Dobudish</productname> in
|
||||
<filename>$HOME/Downloads</filename> heruntergeladen wurde:</para>
|
||||
27f054b7 | Moritz Bunkus | |||
3adb0cb7 | Moritz Bunkus | <programlisting>cd doc/build
|
||
27f054b7 | Moritz Bunkus | unzip $HOME/Downloads/dobudish-nojre-1.1.4.zip</programlisting>
|
||
3adb0cb7 | Moritz Bunkus | </sect2>
|
||
27f054b7 | Moritz Bunkus | |||
3adb0cb7 | Moritz Bunkus | <sect2 id="devel.build-doc.build">
|
||
<title>PDFs und HTML-Seiten erstellen</title>
|
||||
27f054b7 | Moritz Bunkus | |||
3adb0cb7 | Moritz Bunkus | <para>Die eigentliche Konvertierung erfolgt nach Installation der
|
||
benötigten Software mit einem einfachen Aufruf direkt aus dem
|
||||
5fa26f9a | Moritz Bunkus | kivitendo-Installationsverzeichnis heraus:</para>
|
||
27f054b7 | Moritz Bunkus | |||
3adb0cb7 | Moritz Bunkus | <programlisting>./scripts/build_doc.sh</programlisting>
|
||
</sect2>
|
||||
27f054b7 | Moritz Bunkus | |||
3adb0cb7 | Moritz Bunkus | <sect2 id="devel.build-doc.repository">
|
||
<title>Einchecken in das Git-Repository</title>
|
||||
27f054b7 | Moritz Bunkus | |||
3adb0cb7 | Moritz Bunkus | <para>Sowohl die XML-Datei als auch die erzeugten PDF- und
|
||
HTML-Dateien sind Bestandteil des Git-Repositories. Daraus folgt, dass
|
||||
nach Änderungen am XML die PDF- und HTML-Dokumente ebenfalls gebaut
|
||||
und alles zusammen in einem Commit eingecheckt werden sollten.</para>
|
||||
27f054b7 | Moritz Bunkus | |||
3adb0cb7 | Moritz Bunkus | <para>Die "<filename>dobudish</filename>"-Verzeichnisse bzw.
|
||
symbolischen Links gehören hingegen nicht in das Repository.</para>
|
||||
</sect2>
|
||||
27f054b7 | Moritz Bunkus | </sect1>
|
||
7ee506b3 | Moritz Bunkus | </chapter>
|
||
</book>
|