Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision d3a086e3

Von wulf@coulmann.de vor mehr als 12 Jahren hinzugefügt

  • ID d3a086e3786cb08150b3201f69fde5b7d55b3b03
  • Vorgänger b74b299f
  • Nachfolger 8efbc444

diverse Doku Aktuallisierungen
./templates/print/f-tex/README -> Onlinedoku

Unterschiede anzeigen:

doc/dokumentation.xml
<para>im kivitendo-Forum: <ulink
url="https://forum.kivitendo.org/">https://forum.kivitendo.org/</ulink></para>
</listitem>
<listitem>
<para>im alten Lx-Office-Wiki unter Dokumentation (<ulink
url="http://wiki.lx-office.org/index.php?title=Installation_Lx-Office_ERP">http://wiki.lx-office.org/index.php?title=Installation_Lx-Office_ERP</ulink>)</para>
</listitem>
</itemizedlist>
</chapter>
......
dass kivitendo auf ihnen läuft:</para>
<itemizedlist>
<listitem>
<para>Ubuntu 10.04 LTS Lucid Lynx bis 12.10 Oneiric Ocelot</para>
<para>Debian</para>
<itemizedlist>
<listitem>
<para>6.0 Squeeze (hier muss allerdings das Modul FCGI in der Version >= 0.72 compiled werden)</para>
</listitem>
<listitem>
<para>7.0 Wheezy</para>
</listitem>
</itemizedlist>
</listitem>
<listitem>
<para>Debian 5.0 Lenny und 6.0 Squeeze</para>
<para>Ubuntu 10.04 LTS Lucid Lynx bis 12.10 Oneiric Ocelot</para>
</listitem>
<listitem>
......
eingreifen</para>
<para>Dieses kann überprüft werden: ist das Encoding der Datenbank
“template1” “UTF8”, so braucht man nichts weiteres diesbezueglich
“template1” “UTF8”, so braucht man nichts weiteres diesbezüglich
unternehmen. Zum Testen:
<programlisting>su postgres
......
anlegen. Ein Beispiel, wie Sie einen neuen Benutzer anlegen
können:</para>
<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
createuser -d -P kivitendo
exit</programlisting>
......
<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 sind das die Pakete:</para>
<para><literal>texlive-latex-base texlive-latex-extra
texlive-fonts-recommended</literal></para>
Debianoiden Betriebssystemen installiert man die Pakete mit:</para>
<para>Diese hinteren beiden enthalten Bibliotheken und Schriftarten die
von den Standardvorlagen verwendet werden.</para>
<para><programlisting>aptitude install \
texlive-base-bin \
texlive-latex-recommended \
texlive-fonts-recommended \
texlive-latex-extra \
texlive-lang-german \
texlive-generic-extra
</programlisting></para>
<para>TODO: rpm Pakete.</para>
<para>In den allermeisten Installationen sollte drucken jetzt schon
funktionieren. Sollte ein Fehler auftreten wirft TeX sehr lange
Fehlerbeschreibungen, der eigentliche Fehler ist immer die erste Zeite
die mit einem Ausrufezeichen anfängt. Häufig auftretende Fehler sind zum
Beispiel:</para>
<para>kivitendo bringt 3 alternative Vorlagensätze mit:</para>
<itemizedlist>
<listitem>Standard</listitem>
<listitem>f-tex</listitem>
<listitem>RB</listitem>
</itemizedlist>
<itemizedlist>
<listitem>
<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>
</listitem>
<sect2 id="Vorlagenverzeichnis-anlegen" xreflabel="Vorlagenverzeichnis anlegen">
<title>Vorlagenverzeichnis anlegen</title>
<para>Bei einem neuen Benutzer/Mandanten lässt sich einer dieser Vorlagensätze
als Basis für die zu druckenden Dokumente auswählen:</para>
<listitem>
<para>! Package inputenc Error: Unicode char \u8:桜 not set up for
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
diversen Tricks dazu gebracht werden andere Zeichen zu akzeptieren.
Adere TeX Systeme wie XeTeX schaffen hier Abhilfe.</para>
</listitem>
</itemizedlist>
<para>Wird garkein 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:
<literal>pdflatex</literal>), und stellen Sie sicher, dass pdflatex
(oder das von Ihnen verwendete System) vom Webserver ausgeführt werden
darf.</para>
<para><programlisting>unter:
Administration -> Benutzerverwaltung -> [ein Benutzer]
Erzeuge Vorlagen, Name: [Name für das neue Vorlagenverzeichnis]
Vorlagen auswählen: [Default, f-tex oder RB]
-> Speichern
</programlisting></para>
<para>der gleiche Vorlagensatz kann, wenn er mal angelegt ist, bei mehreren Benutzern verwendet werden.</para>
<para>Die Abhängigkeiten kann man prüfen mit:</para>
<para><programlisting>/scripts/installation_check.pl -l</programlisting></para>
</sect2>
<sect2 id="Standard">
<title>Default</title>
<para>Der standard Vorlagensatz von Kivitendo. Wie unter
<ulink url="http://demo.kivitendo.org">http://demo.kivitendo.org</ulink> zu sehen.</para>
</sect2>
<sect2 id="f-tex">
<title>f-tex</title>
<para>Ein Vorlagensatz, der in Wenigen Minuten alle Dokumente zur stellt.</para>
<sect3 id="f-tex-Feature-Übersicht">
<title>f-tex Feature Übersicht</title>
<itemizedlist>
<listitem>Keine Retundanz. Es wird ein und die selbe Latex-Vorlage für alle
briefartigen Dokumente verwendet. Also Angebot, Rechnung,
Performarechnung, Lieferschein, aber eben nicht für Paketaufkleber
etc.. </listitem>
<listitem>Leichte Anpassung an das Firmen Layout durch verwendung eines Hintergrund-PDF
dieses kann leicht mit dem eigenen Lieblingsprogramm erstellt werden
(Openoffice, Inkscape, Gimp, Adobe*)
</listitem>
<listitem>Hintergrundpdf um schaltbar auf "nur erste Seite" (default) oder "alle Seiten"
(option "bgPdfFirstPageOnly" in Datei letter.lco)
</listitem>
<listitem>Hintergrundpdf für Ausdruck auf bereits bedrucktem Briefpapier Abschaltbar,
es wird dann nur bei per email versendeten Dokumenten eingebunden.
(Option "bgPdfEmailOnly" in Datei letter.lco)
</listitem>
<listitem>Nutzung der Layout-Funktionen von Latex für Seitenumbruch,
wiederholung von Kopfzeilen, Zwischensummen etc. (danke an Kai-Martin für
die Vorarbeit)
</listitem>
<listitem>Anzeige des Empfängerlandes im Adressfeld nur, wenn es vom Land des
eigenen Unternehmens abweicht (also die Rechnung das Land verlässt).
</listitem>
<listitem>Multisprachfähig leicht um weitere Sprachen zu erweitern, alle
Übersetzungen in der Datei translatinos.tex.
</listitem>
<listitem>Auflistung von Bruttopreisen für Endverbraucher.
</listitem>
</itemizedlist>
</sect3>
<sect3 id="f-tex-installation">
<title>f-tex Die Installation</title>
<itemizedlist>
<listitem>Vorlagenverzeichnis mit Option f-tex anlegen, siehe:
<xref linkend="Vorlagenverzeichnis-anlegen"/>
Das Vorlagensystem funktioniert jetzt schon, hat allerdings noch einen
Beispiel Briefkopf
</listitem>
<listitem>
Erstelle eine pdf-Hintergrund Datei und verlinke sie nach
<programlisting>./letter_head.pdf</programlisting>
</listitem>
<listitem>
Editiere den Bereich "settings" in der datei letter.lco
</listitem>
</itemizedlist>
<para>oder etwas Detaillierter:</para>
<para>
Es wird eine Datei sample.lco erstellt und diese nach letter.lco 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 Hintergrundpdf verwiesen. Ich empfehle über dieses pdf
die persönlichen Layoutanpassungen vorzunehmen und sample.lco unverändert zu
lassen. Die die Anpassung über eine *.lco Datei die letztlich auf letter.lco
verlinkt ist ist aber auch möglich.
</para>
<para>
Es wird eine Datei sample_head.pdf mit ausgeliefert, diese wird nach
letter_head.pdf verlinkt. Damit gibt es schon mal eine Funktionsfähige
Vorlage. Schau Dir nach Abschluss der Installation die Datei sample_haed.pdf
an und erstelle ein entsprechendes pdf passend zum Briefkopf Deiner Firma,
diese dann im Template Verzeichniss ablegen und statt sample_head.pdf nach
letter_head.pdf verlinken.
</para>
<para>
letzlich muss ./letter_head.pdf auf das passende Hintergrundpdf verweisen,
welches gewünschten Briefkopf enthält. Bei Updates oder nach erneutem
</para>
<para>
Es wird eine Datei mydata.tex.example ausgeliefert die nach mytdata.tex
verlinkt ist. Bei verwendetem Hintergrundpdf 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 *.lco Datei erfolgen.
</para>
</sect3>
<sect3 id="f-tex-Funktionsübersicht">
<title>f-tex Funktionsübersicht</title>
<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
Latexvorlage verwendet, welche über Codeweichen die Besonderheiten
der jeweiligen Dokumente Berücksichtigt
</para>
<itemizedlist>
<listitem>Tabellen mit oder ohne Preis
</listitem>
<listitem>Sprache der Tabellenüberschriften etc.
</listitem>
<listitem>Anpassung der Bezugs-Zeile (z.B. Rechnungsnummer versus
Angebotsnummer)
</listitem>
<listitem>Darstellung von Brutto oder Netto-Preisen in der Auflistung
(Endverbraucher versus Gewerblicher Kunde)
</listitem>
</itemizedlist>
<para>Nachteil:</para>
<para>
Latex hat ohnehin eine sehr steile Lehrnkurve. Die Datei letter.tex
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 häftig in
den Fuss schiessen.
</para>
<para>Wer nicht so tief in die Materie einsteigen will oder leicht zu
frustrieren ist, sollte sein Hintergrund PDF auf Basis der mitglieferten
Datei sample_head.pdf erstellen, und sich an der Form der dargestellten Tabellen
wie sie ausgeliefert werden, erfreuen.
</para>
<para>Kleiner Tipp:
Nicht zu viel auf einmal wollen, lieber kleine kontinuierliche
Schritte gehen.
</para>
<para>Bruttopreise für Endvorbraucher</para>
<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>
<itemizedlist>
<listitem>
hierfür müssen die Preise auch in Brutto in der Datenbank stehen
(ja - das lässt sich über die Preisgruppen und die Zuordung einer Default-Preisgruppe
handhaben)
</listitem>
<listitem>
man darf beim Anlegen des Vorgangs nicht vergessen Dieses Häkchen zu setzen.
(das ist in der Praxis wenn man sowohl Endverbraucher- wie Gewerbekunden beliefert
der eigentliche Knackpunkt)
</listitem>
</itemizedlist>
<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>
<itemizedlist>
<listitem>
die Entscheidung ob Netopreise ausgewiesen werden ist nicht mehr fix
mit einer Preisliste Verbunden.
</listitem>
<listitem>
die Default-Zahlart kann im Kundendatensatz hinterlegt werden und man
muss nicht mehr daran denken "alle Preise Netto" auszuwählen.
</listitem>
<listitem>
Die Entscheidung ob Netto/Oder Bruttopreise ausgewiesen werden kann direkt
beim Drucken reviediert werden, ohne dass sich der Auftragswert ändert.
</listitem>
</itemizedlist>
<para>Lieferadressen</para>
<itemizedlist>
<listitem>
in Lieferscheinen kommen shipto* -Variablen im Adressfeld zum Einsatz
</listitem>
<listitem>
wenn die shipto*variable leer ist wird die entsprechende
Adressvariable eingesetzt. Wenn Also die Lieferadresse in Strasse,
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.
</listitem>
</itemizedlist>
</sect3>
</sect2>
<sect2 id="RB">
<title>RB</title>
<para>Vollständiger Dokumentensatz mit alternativen Design</para>
</sect2>
<sect2 id="Allgemeine Hinweise zu LaTeX">
<title>Allgemeine Hinweise zu LaTeX Vorlagen</title>
<para>In den allermeisten Installationen sollte drucken jetzt schon
funktionieren. Sollte ein Fehler auftreten wirft TeX sehr lange
Fehlerbeschreibungen, der eigentliche Fehler ist immer die erste Zeite
die mit einem Ausrufezeichen anfängt. Häufig auftretende Fehler sind zum
Beispiel:</para>
<itemizedlist>
<listitem>
<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>
</listitem>
<listitem>
<para>! Package inputenc Error: Unicode char \u8:桜 not set up for
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
diversen Tricks dazu gebracht werden andere Zeichen zu akzeptieren.
Adere TeX Systeme wie XeTeX schaffen hier Abhilfe.</para>
</listitem>
</itemizedlist>
<para>Wird garkein 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:
<literal>pdflatex</literal>), und stellen Sie sicher, dass pdflatex
(oder das von Ihnen verwendete System) vom Webserver ausgeführt werden
darf.</para>
<para>Wenn sich das Problem nicht auf Grund der ausgabe im Webbrowser verifizieren lässt:</para>
<itemizedlist>
<listitem>
<para> editiere [kivitendo-home]/config/kivitendo.conf und ändere "keep_tmp_files" auf 1</para>
<para><programlisting>keep_temp_files = 1;</programlisting></para>
</listitem>
<listitem>
<para>bei fastcgi oder mod_perl den Webserver neu Starten</para>
</listitem>
<listitem>
<para>Nochmal einen Druckversuch im Webfrontend auslösen</para>
</listitem>
<listitem>
<para>wechsele in das users Verzeichnis von kivitendo</para>
<para><programlisting>cd [kivitendo-home]/users</programlisting></para>
</listitem>
<listitem>
<para>LaTeX Suchpfad anpassen:</para>
<para><programlisting>export TEXINPUTS=".:[kivitendo-home]/templates/[aktuelles_template_verzeichniss]:"</programlisting></para>
</listitem>
<listitem>
<para>Finde herraus welche Datei kivitendo beim letzten Durchlauf erstellt hat</para>
<para><programlisting>ls -lahtr ./1*.tex</programlisting></para>
<para>Es sollte die letzte Datei ganz unten sein</para>
</listitem>
<listitem>
<para>für besseren Hinweis auf Fehler texdatei nochmals übersetzen</para>
<para><programlisting>pdflatex ./1*.tex</programlisting></para>
<para>in der *.tex datei nach dem Fehler suchen.</para>
</listitem>
</itemizedlist>
</sect2>
</sect1>
<sect1 id="OpenDocument-Vorlagen">
doc/html/ch01.html
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Kapitel 1. Aktuelle Hinweise</title><link rel="stylesheet" type="text/css" href="style.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1-RC2"><link rel="home" href="index.html" title="kivitendo: Installation, Konfiguration, Entwicklung"><link rel="up" href="index.html" title="kivitendo: Installation, Konfiguration, Entwicklung"><link rel="prev" href="index.html" title="kivitendo: Installation, Konfiguration, Entwicklung"><link rel="next" href="ch02.html" title="Kapitel 2. Installation und Grundkonfiguration"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Kapitel 1. Aktuelle Hinweise</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="index.html">Zurück</a>&nbsp;</td><th width="60%" align="center">&nbsp;</th><td width="20%" align="right">&nbsp;<a accesskey="n" href="ch02.html">Weiter</a></td></tr></table><hr></div><div class="chapter" title="Kapitel 1. Aktuelle Hinweise"><div class="titlepage"><div><div><h2 class="title"><a name="Aktuelle-Hinweise"></a>Kapitel 1. Aktuelle Hinweise</h2></div></div></div><p>Aktuelle Installations- und Konfigurationshinweise gibt es:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>im kivitendo-Forum: <a class="ulink" href="https://forum.kivitendo.org/" target="_top">https://forum.kivitendo.org/</a>
</p></li><li class="listitem"><p>im alten Lx-Office-Wiki unter Dokumentation (<a class="ulink" href="http://wiki.lx-office.org/index.php?title=Installation_Lx-Office_ERP" target="_top">http://wiki.lx-office.org/index.php?title=Installation_Lx-Office_ERP</a>)</p></li></ul></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="index.html">Zurück</a>&nbsp;</td><td width="20%" align="center">&nbsp;</td><td width="40%" align="right">&nbsp;<a accesskey="n" href="ch02.html">Weiter</a></td></tr><tr><td width="40%" align="left" valign="top">kivitendo: Installation, Konfiguration, Entwicklung&nbsp;</td><td width="20%" align="center"><a accesskey="h" href="index.html">Zum Anfang</a></td><td width="40%" align="right" valign="top">&nbsp;Kapitel 2. Installation und Grundkonfiguration</td></tr></table></div></body></html>
</p></li></ul></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="index.html">Zurück</a>&nbsp;</td><td width="20%" align="center">&nbsp;</td><td width="40%" align="right">&nbsp;<a accesskey="n" href="ch02.html">Weiter</a></td></tr><tr><td width="40%" align="left" valign="top">kivitendo: Installation, Konfiguration, Entwicklung&nbsp;</td><td width="20%" align="center"><a accesskey="h" href="index.html">Zum Anfang</a></td><td width="40%" align="right" valign="top">&nbsp;Kapitel 2. Installation und Grundkonfiguration</td></tr></table></div></body></html>
doc/html/ch02.html
bei der Auswahl der Pakete aber darauf Rücksicht genommen, dass es
ohne große Probleme auf den derzeit aktuellen verbreiteten
Distributionen läuft.</p><p>Mitte 2012 sind das folgende Systeme, von denen bekannt ist,
dass kivitendo auf ihnen läuft:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Ubuntu 10.04 LTS Lucid Lynx bis 12.10 Oneiric Ocelot</p></li><li class="listitem"><p>Debian 5.0 Lenny und 6.0 Squeeze</p></li><li class="listitem"><p>openSUSE 11.2 und 11.3</p></li><li class="listitem"><p>SuSE Linux Enterprice Server 11</p></li><li class="listitem"><p>Fedora 13 bis 16</p></li></ul></div></div><div class="sect2" title="2.1.2. Pakete"><div class="titlepage"><div><div><h3 class="title"><a name="Pakete"></a>2.1.2. Pakete</h3></div></div></div><p>Zum Betrieb von kivitendo werden zwingend ein Webserver (meist
dass kivitendo auf ihnen läuft:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Debian</p><div class="itemizedlist"><ul class="itemizedlist" type="circle"><li class="listitem"><p>6.0 Squeeze (hier muss allerdings das Modul FCGI in der Version &gt;= 0.72 compiled werden)</p></li><li class="listitem"><p>7.0 Wheezy</p></li></ul></div></li><li class="listitem"><p>Ubuntu 10.04 LTS Lucid Lynx bis 12.10 Oneiric Ocelot</p></li><li class="listitem"><p>openSUSE 11.2 und 11.3</p></li><li class="listitem"><p>SuSE Linux Enterprice Server 11</p></li><li class="listitem"><p>Fedora 13 bis 16</p></li></ul></div></div><div class="sect2" title="2.1.2. Pakete"><div class="titlepage"><div><div><h3 class="title"><a name="Pakete"></a>2.1.2. Pakete</h3></div></div></div><p>Zum Betrieb von kivitendo werden zwingend ein Webserver (meist
Apache) und ein Datenbankserver (PostgreSQL, mindestens v8.2)
benötigt.</p><p>Zusätzlich benötigt kivitendo die folgenden Perl-Pakete, die
nicht Bestandteil einer Standard-Perl-Installation sind:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>
doc/html/ch02s04.html
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>2.4. Anpassung der PostgreSQL-Konfiguration</title><link rel="stylesheet" type="text/css" href="style.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1-RC2"><link rel="home" href="index.html" title="kivitendo: Installation, Konfiguration, Entwicklung"><link rel="up" href="ch02.html" title="Kapitel 2. Installation und Grundkonfiguration"><link rel="prev" href="ch02s03.html" title="2.3. kivitendo-Konfigurationsdatei"><link rel="next" href="ch02s05.html" title="2.5. Webserver-Konfiguration"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">2.4. Anpassung der PostgreSQL-Konfiguration</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch02s03.html">Zurück</a>&nbsp;</td><th width="60%" align="center">Kapitel 2. Installation und Grundkonfiguration</th><td width="20%" align="right">&nbsp;<a accesskey="n" href="ch02s05.html">Weiter</a></td></tr></table><hr></div><div class="sect1" title="2.4. Anpassung der PostgreSQL-Konfiguration"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="Anpassung-der-PostgreSQL-Konfiguration"></a>2.4. Anpassung der PostgreSQL-Konfiguration</h2></div></div></div><p>PostgreSQL muss auf verschiedene Weisen angepasst werden.</p><div class="sect2" title="2.4.1. Zeichensätze/die Verwendung von UTF-8"><div class="titlepage"><div><div><h3 class="title"><a name="Zeichens%C3%A4tze-die-Verwendung-von-UTF-8"></a>2.4.1. Zeichensätze/die Verwendung von UTF-8</h3></div></div></div><p>Bei aktuellen Serverinstallationen braucht man hier meist nicht
eingreifen</p><p>Dieses kann überprüft werden: ist das Encoding der Datenbank
“template1” “UTF8”, so braucht man nichts weiteres diesbezueglich
“template1” “UTF8”, so braucht man nichts weiteres diesbezüglich
unternehmen. Zum Testen:
</p><pre class="programlisting">su postgres
......
\q</pre></div><div class="sect2" title="2.4.4. Datenbankbenutzer anlegen"><div class="titlepage"><div><div><h3 class="title"><a name="Datenbankbenutzer-anlegen"></a>2.4.4. Datenbankbenutzer anlegen</h3></div></div></div><p>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:</p><pre class="programlisting">su - postgres
können:</p><p>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.</p><pre class="programlisting">su - postgres
createuser -d -P kivitendo
exit</pre><p>Wenn Sie später einen Datenbankzugriff konfigurieren, verändern
Sie den evtl. voreingestellten Benutzer “postgres” auf “kivitendo” bzw.
doc/html/ch02s05.html
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>2.5. Webserver-Konfiguration</title><link rel="stylesheet" type="text/css" href="style.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1-RC2"><link rel="home" href="index.html" title="kivitendo: Installation, Konfiguration, Entwicklung"><link rel="up" href="ch02.html" title="Kapitel 2. Installation und Grundkonfiguration"><link rel="prev" href="ch02s04.html" title="2.4. Anpassung der PostgreSQL-Konfiguration"><link rel="next" href="ch02s06.html" title="2.6. Der Task-Server"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">2.5. Webserver-Konfiguration</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch02s04.html">Zurück</a>&nbsp;</td><th width="60%" align="center">Kapitel 2. Installation und Grundkonfiguration</th><td width="20%" align="right">&nbsp;<a accesskey="n" href="ch02s06.html">Weiter</a></td></tr></table><hr></div><div class="sect1" title="2.5. Webserver-Konfiguration"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="Apache-Konfiguration"></a>2.5. Webserver-Konfiguration</h2></div></div></div><div class="sect2" title="2.5.1. Grundkonfiguration mittels CGI"><div class="titlepage"><div><div><h3 class="title"><a name="d0e589"></a>2.5.1. Grundkonfiguration mittels CGI</h3></div></div></div><div class="note" title="Anmerkung" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Note"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Anmerkung]" src="../../../../system/docbook-xsl/images/note.png"></td><th align="left">Anmerkung</th></tr><tr><td align="left" valign="top"><p>Für einen deutlichen Performanceschub sorgt die Ausführung
<title>2.5. Webserver-Konfiguration</title><link rel="stylesheet" type="text/css" href="style.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1-RC2"><link rel="home" href="index.html" title="kivitendo: Installation, Konfiguration, Entwicklung"><link rel="up" href="ch02.html" title="Kapitel 2. Installation und Grundkonfiguration"><link rel="prev" href="ch02s04.html" title="2.4. Anpassung der PostgreSQL-Konfiguration"><link rel="next" href="ch02s06.html" title="2.6. Der Task-Server"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">2.5. Webserver-Konfiguration</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch02s04.html">Zurück</a>&nbsp;</td><th width="60%" align="center">Kapitel 2. Installation und Grundkonfiguration</th><td width="20%" align="right">&nbsp;<a accesskey="n" href="ch02s06.html">Weiter</a></td></tr></table><hr></div><div class="sect1" title="2.5. Webserver-Konfiguration"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="Apache-Konfiguration"></a>2.5. Webserver-Konfiguration</h2></div></div></div><div class="sect2" title="2.5.1. Grundkonfiguration mittels CGI"><div class="titlepage"><div><div><h3 class="title"><a name="d0e592"></a>2.5.1. Grundkonfiguration mittels CGI</h3></div></div></div><div class="note" title="Anmerkung" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Note"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Anmerkung]" src="../../../../system/docbook-xsl/images/note.png"></td><th align="left">Anmerkung</th></tr><tr><td align="left" valign="top"><p>Für einen deutlichen Performanceschub sorgt die Ausführung
mittels FastCGI/FCGI. Die Einrichtung wird ausführlich im Abschnitt
<a class="xref" href="ch02s05.html#Apache-Konfiguration.FCGI" title="2.5.2. Konfiguration für FastCGI/FCGI">Konfiguration für FastCGI/FCGI</a> beschrieben.</p></td></tr></table></div><p>Der Zugriff auf das Programmverzeichnis muss in der Apache
Webserverkonfigurationsdatei <code class="literal">httpd.conf</code> eingestellt
doc/html/ch02s06.html
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.</p><div class="sect3" title="2.6.2.1. SystemV-basierende Systeme (z.B. Debian, OpenSuSE, Fedora Core)"><div class="titlepage"><div><div><h4 class="title"><a name="d0e773"></a>2.6.2.1. SystemV-basierende Systeme (z.B. Debian, OpenSuSE, Fedora
anstelle eines symbolischen Links verwendet werden können.</p><div class="sect3" title="2.6.2.1. SystemV-basierende Systeme (z.B. Debian, OpenSuSE, Fedora Core)"><div class="titlepage"><div><div><h4 class="title"><a name="d0e776"></a>2.6.2.1. SystemV-basierende Systeme (z.B. Debian, OpenSuSE, Fedora
Core)</h4></div></div></div><p>Kopieren Sie die Datei
<code class="filename">scripts/boot/system-v/kivitendo-server</code>
nach <code class="filename">/etc/init.d/kivitendo-server</code>. Passen
......
insserv kivitendo-task-server</pre></li><li class="listitem"><p>OpenSuSE und Fedora Core:</p><pre class="programlisting">chkconfig --add kivitendo-task-server</pre></li></ul></div><p>Danach kann der Task-Server mit dem folgenden Befehl gestartet
werden: <span class="command"><strong>/etc/init.d/kivitendo-task-server
start</strong></span>
</p></div><div class="sect3" title="2.6.2.2. Upstart-basierende Systeme (z.B. Ubuntu)"><div class="titlepage"><div><div><h4 class="title"><a name="d0e803"></a>2.6.2.2. Upstart-basierende Systeme (z.B. Ubuntu)</h4></div></div></div><p>Kopieren Sie die Datei
</p></div><div class="sect3" title="2.6.2.2. Upstart-basierende Systeme (z.B. Ubuntu)"><div class="titlepage"><div><div><h4 class="title"><a name="d0e806"></a>2.6.2.2. Upstart-basierende Systeme (z.B. Ubuntu)</h4></div></div></div><p>Kopieren Sie die Datei
<code class="filename">scripts/boot/upstart/kivitendo-task-server.conf</code>
nach <code class="filename">/etc/init/kivitendo-task-server.conf</code>.
Passen Sie in der kopierten Datei den Pfad zum Task-Server an (Zeile
doc/html/ch02s10.html
<title>2.10. Drucken mit kivitendo</title><link rel="stylesheet" type="text/css" href="style.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1-RC2"><link rel="home" href="index.html" title="kivitendo: Installation, Konfiguration, Entwicklung"><link rel="up" href="ch02.html" title="Kapitel 2. Installation und Grundkonfiguration"><link rel="prev" href="ch02s09.html" title="2.9. E-Mail-Versand aus kivitendo heraus"><link rel="next" href="ch02s11.html" title="2.11. OpenDocument-Vorlagen"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">2.10. Drucken mit kivitendo</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch02s09.html">Zurück</a>&nbsp;</td><th width="60%" align="center">Kapitel 2. Installation und Grundkonfiguration</th><td width="20%" align="right">&nbsp;<a accesskey="n" href="ch02s11.html">Weiter</a></td></tr></table><hr></div><div class="sect1" title="2.10. Drucken mit kivitendo"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="Drucken-mit-kivitendo"></a>2.10. Drucken mit kivitendo</h2></div></div></div><p>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 <code class="literal">texlive</code> Installation. Unter
Debianoiden Betriebssystemen sind das die Pakete:</p><p>
<code class="literal">texlive-latex-base texlive-latex-extra
texlive-fonts-recommended</code>
</p><p>Diese hinteren beiden enthalten Bibliotheken und Schriftarten die
von den Standardvorlagen verwendet werden.</p><p>TODO: rpm Pakete.</p><p>In den allermeisten Installationen sollte drucken jetzt schon
funktionieren. Sollte ein Fehler auftreten wirft TeX sehr lange
Fehlerbeschreibungen, der eigentliche Fehler ist immer die erste Zeite
die mit einem Ausrufezeichen anfängt. Häufig auftretende Fehler sind zum
Beispiel:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>! 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.</p></li><li class="listitem"><p>! Package inputenc Error: Unicode char \u8:桜 not set up for
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
diversen Tricks dazu gebracht werden andere Zeichen zu akzeptieren.
Adere TeX Systeme wie XeTeX schaffen hier Abhilfe.</p></li></ul></div><p>Wird garkein 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:
<code class="literal">pdflatex</code>), und stellen Sie sicher, dass pdflatex
(oder das von Ihnen verwendete System) vom Webserver ausgeführt werden
darf.</p></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch02s09.html">Zurück</a>&nbsp;</td><td width="20%" align="center"><a accesskey="u" href="ch02.html">Nach oben</a></td><td width="40%" align="right">&nbsp;<a accesskey="n" href="ch02s11.html">Weiter</a></td></tr><tr><td width="40%" align="left" valign="top">2.9. E-Mail-Versand aus kivitendo heraus&nbsp;</td><td width="20%" align="center"><a accesskey="h" href="index.html">Zum Anfang</a></td><td width="40%" align="right" valign="top">&nbsp;2.11. OpenDocument-Vorlagen</td></tr></table></div></body></html>
Debianoiden Betriebssystemen installiert man die Pakete mit:</p><p>
</p><pre class="programlisting">aptitude install \
texlive-base-bin \
texlive-latex-recommended \
texlive-fonts-recommended \
texlive-latex-extra \
texlive-lang-german \
texlive-generic-extra
</pre><p>
</p><p>TODO: rpm Pakete.</p><p>kivitendo bringt 3 alternative Vorlagensätze mit:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">Standard</li><li class="listitem">f-tex</li><li class="listitem">RB</li></ul></div><div class="sect2" title="2.10.1. Vorlagenverzeichnis anlegen"><div class="titlepage"><div><div><h3 class="title"><a name="Vorlagenverzeichnis-anlegen"></a>2.10.1. Vorlagenverzeichnis anlegen</h3></div></div></div><p>Bei einem neuen Benutzer/Mandanten lässt sich einer dieser Vorlagensätze
als Basis für die zu druckenden Dokumente auswählen:</p><p>
</p><pre class="programlisting">unter:
Administration -&gt; Benutzerverwaltung -&gt; [ein Benutzer]
Erzeuge Vorlagen, Name: [Name für das neue Vorlagenverzeichnis]
Vorlagen auswählen: [Default, f-tex oder RB]
-&gt; Speichern
</pre><p>
</p><p>der gleiche Vorlagensatz kann, wenn er mal angelegt ist, bei mehreren Benutzern verwendet werden.</p><p>Die Abhängigkeiten kann man prüfen mit:</p><p>
</p><pre class="programlisting">/scripts/installation_check.pl -l</pre><p>
</p></div><div class="sect2" title="2.10.2. Default"><div class="titlepage"><div><div><h3 class="title"><a name="Standard"></a>2.10.2. Default</h3></div></div></div><p>Der standard Vorlagensatz von Kivitendo. Wie unter
<a class="ulink" href="http://demo.kivitendo.org" target="_top">http://demo.kivitendo.org</a> zu sehen.</p></div><div class="sect2" title="2.10.3. f-tex"><div class="titlepage"><div><div><h3 class="title"><a name="f-tex"></a>2.10.3. f-tex</h3></div></div></div><p>Ein Vorlagensatz, der in Wenigen Minuten alle Dokumente zur stellt.</p><div class="sect3" title="2.10.3.1. f-tex Feature Übersicht"><div class="titlepage"><div><div><h4 class="title"><a name="f-tex-Feature-%C3%9Cbersicht"></a>2.10.3.1. f-tex Feature Übersicht</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">Keine Retundanz. Es wird ein und die selbe Latex-Vorlage für alle
briefartigen Dokumente verwendet. Also Angebot, Rechnung,
Performarechnung, Lieferschein, aber eben nicht für Paketaufkleber
etc.. </li><li class="listitem">Leichte Anpassung an das Firmen Layout durch verwendung eines Hintergrund-PDF
dieses kann leicht mit dem eigenen Lieblingsprogramm erstellt werden
(Openoffice, Inkscape, Gimp, Adobe*)
</li><li class="listitem">Hintergrundpdf um schaltbar auf "nur erste Seite" (default) oder "alle Seiten"
(option "bgPdfFirstPageOnly" in Datei letter.lco)
</li><li class="listitem">Hintergrundpdf für Ausdruck auf bereits bedrucktem Briefpapier Abschaltbar,
es wird dann nur bei per email versendeten Dokumenten eingebunden.
(Option "bgPdfEmailOnly" in Datei letter.lco)
</li><li class="listitem">Nutzung der Layout-Funktionen von Latex für Seitenumbruch,
wiederholung von Kopfzeilen, Zwischensummen etc. (danke an Kai-Martin für
die Vorarbeit)
</li><li class="listitem">Anzeige des Empfängerlandes im Adressfeld nur, wenn es vom Land des
eigenen Unternehmens abweicht (also die Rechnung das Land verlässt).
</li><li class="listitem">Multisprachfähig leicht um weitere Sprachen zu erweitern, alle
Übersetzungen in der Datei translatinos.tex.
</li><li class="listitem">Auflistung von Bruttopreisen für Endverbraucher.
</li></ul></div></div><div class="sect3" title="2.10.3.2. f-tex Die Installation"><div class="titlepage"><div><div><h4 class="title"><a name="f-tex-installation"></a>2.10.3.2. f-tex Die Installation</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">Vorlagenverzeichnis mit Option f-tex anlegen, siehe:
<a class="xref" href="ch02s10.html#Vorlagenverzeichnis-anlegen" title="2.10.1. Vorlagenverzeichnis anlegen">Vorlagenverzeichnis anlegen</a>
Das Vorlagensystem funktioniert jetzt schon, hat allerdings noch einen
Beispiel Briefkopf
</li><li class="listitem">
Erstelle eine pdf-Hintergrund Datei und verlinke sie nach
<pre class="programlisting">./letter_head.pdf</pre></li><li class="listitem">
Editiere den Bereich "settings" in der datei letter.lco
</li></ul></div><p>oder etwas Detaillierter:</p><p>
Es wird eine Datei sample.lco erstellt und diese nach letter.lco 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 Hintergrundpdf verwiesen. Ich empfehle über dieses pdf
die persönlichen Layoutanpassungen vorzunehmen und sample.lco unverändert zu
lassen. Die die Anpassung über eine *.lco Datei die letztlich auf letter.lco
verlinkt ist ist aber auch möglich.
</p><p>
Es wird eine Datei sample_head.pdf mit ausgeliefert, diese wird nach
letter_head.pdf verlinkt. Damit gibt es schon mal eine Funktionsfähige
Vorlage. Schau Dir nach Abschluss der Installation die Datei sample_haed.pdf
an und erstelle ein entsprechendes pdf passend zum Briefkopf Deiner Firma,
diese dann im Template Verzeichniss ablegen und statt sample_head.pdf nach
letter_head.pdf verlinken.
</p><p>
letzlich muss ./letter_head.pdf auf das passende Hintergrundpdf verweisen,
welches gewünschten Briefkopf enthält. Bei Updates oder nach erneutem
</p><p>
Es wird eine Datei mydata.tex.example ausgeliefert die nach mytdata.tex
verlinkt ist. Bei verwendetem Hintergrundpdf 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).
</p><p>
Alle Anpassungen zum Briefkopf, Fusszeilen, Firmenlogos, etc.
sollten über die Hintergrund pdf datei oder die *.lco Datei erfolgen.
</p></div><div class="sect3" title="2.10.3.3. f-tex Funktionsübersicht"><div class="titlepage"><div><div><h4 class="title"><a name="f-tex-Funktions%C3%BCbersicht"></a>2.10.3.3. f-tex Funktionsübersicht</h4></div></div></div><p>
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
Latexvorlage verwendet, welche über Codeweichen die Besonderheiten
der jeweiligen Dokumente Berücksichtigt
</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">Tabellen mit oder ohne Preis
</li><li class="listitem">Sprache der Tabellenüberschriften etc.
</li><li class="listitem">Anpassung der Bezugs-Zeile (z.B. Rechnungsnummer versus
Angebotsnummer)
</li><li class="listitem">Darstellung von Brutto oder Netto-Preisen in der Auflistung
(Endverbraucher versus Gewerblicher Kunde)
</li></ul></div><p>Nachteil:</p><p>
Latex hat ohnehin eine sehr steile Lehrnkurve. Die Datei letter.tex
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 häftig in
den Fuss schiessen.
</p><p>Wer nicht so tief in die Materie einsteigen will oder leicht zu
frustrieren ist, sollte sein Hintergrund PDF auf Basis der mitglieferten
Datei sample_head.pdf erstellen, und sich an der Form der dargestellten Tabellen
wie sie ausgeliefert werden, erfreuen.
</p><p>Kleiner Tipp:
Nicht zu viel auf einmal wollen, lieber kleine kontinuierliche
Schritte gehen.
</p><p>Bruttopreise für Endvorbraucher</p><p>Der auszuweisende Bruttopreis wird innerhalb der LaTeX
Umgebung berechnet. es gibt zwar ein Feld um bei Aufträgen "alle Preise
Brutto" auszuwählen, aber:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
hierfür müssen die Preise auch in Brutto in der Datenbank stehen
(ja - das lässt sich über die Preisgruppen und die Zuordung einer Default-Preisgruppe
handhaben)
</li><li class="listitem">
man darf beim Anlegen des Vorgangs nicht vergessen Dieses Häkchen zu setzen.
(das ist in der Praxis wenn man sowohl Endverbraucher- wie Gewerbekunden beliefert
der eigentliche Knackpunkt)
</li></ul></div><p>
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:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
die Entscheidung ob Netopreise ausgewiesen werden ist nicht mehr fix
mit einer Preisliste Verbunden.
</li><li class="listitem">
die Default-Zahlart kann im Kundendatensatz hinterlegt werden und man
muss nicht mehr daran denken "alle Preise Netto" auszuwählen.
</li><li class="listitem">
Die Entscheidung ob Netto/Oder Bruttopreise ausgewiesen werden kann direkt
beim Drucken reviediert werden, ohne dass sich der Auftragswert ändert.
</li></ul></div><p>Lieferadressen</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem">
in Lieferscheinen kommen shipto* -Variablen im Adressfeld zum Einsatz
</li><li class="listitem">
wenn die shipto*variable leer ist wird die entsprechende
Adressvariable eingesetzt. Wenn Also die Lieferadresse in Strasse,
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.
</li></ul></div></div></div><div class="sect2" title="2.10.4. RB"><div class="titlepage"><div><div><h3 class="title"><a name="RB"></a>2.10.4. RB</h3></div></div></div><p>Vollständiger Dokumentensatz mit alternativen Design</p></div><div class="sect2" title="2.10.5. Allgemeine Hinweise zu LaTeX Vorlagen"><div class="titlepage"><div><div><h3 class="title"><a name="Allgemeine Hinweise zu LaTeX"></a>2.10.5. Allgemeine Hinweise zu LaTeX Vorlagen</h3></div></div></div><p>In den allermeisten Installationen sollte drucken jetzt schon
funktionieren. Sollte ein Fehler auftreten wirft TeX sehr lange
Fehlerbeschreibungen, der eigentliche Fehler ist immer die erste Zeite
die mit einem Ausrufezeichen anfängt. Häufig auftretende Fehler sind zum
Beispiel:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>! 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.</p></li><li class="listitem"><p>! Package inputenc Error: Unicode char \u8:桜 not set up for
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
diversen Tricks dazu gebracht werden andere Zeichen zu akzeptieren.
Adere TeX Systeme wie XeTeX schaffen hier Abhilfe.</p></li></ul></div><p>Wird garkein 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:
<code class="literal">pdflatex</code>), und stellen Sie sicher, dass pdflatex
(oder das von Ihnen verwendete System) vom Webserver ausgeführt werden
darf.</p><p>Wenn sich das Problem nicht auf Grund der ausgabe im Webbrowser verifizieren lässt:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p> editiere [kivitendo-home]/config/kivitendo.conf und ändere "keep_tmp_files" auf 1</p><p>
</p><pre class="programlisting">keep_temp_files = 1;</pre><p>
</p></li><li class="listitem"><p>bei fastcgi oder mod_perl den Webserver neu Starten</p></li><li class="listitem"><p>Nochmal einen Druckversuch im Webfrontend auslösen</p></li><li class="listitem"><p>wechsele in das users Verzeichnis von kivitendo</p><p>
</p><pre class="programlisting">cd [kivitendo-home]/users</pre><p>
</p></li><li class="listitem"><p>LaTeX Suchpfad anpassen:</p><p>
</p><pre class="programlisting">export TEXINPUTS=".:[kivitendo-home]/templates/[aktuelles_template_verzeichniss]:"</pre><p>
</p></li><li class="listitem"><p>Finde herraus welche Datei kivitendo beim letzten Durchlauf erstellt hat</p><p>
</p><pre class="programlisting">ls -lahtr ./1*.tex</pre><p>
</p><p>Es sollte die letzte Datei ganz unten sein</p></li><li class="listitem"><p>für besseren Hinweis auf Fehler texdatei nochmals übersetzen</p><p>
</p><pre class="programlisting">pdflatex ./1*.tex</pre><p>
</p><p>in der *.tex datei nach dem Fehler suchen.</p></li></ul></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch02s09.html">Zurück</a>&nbsp;</td><td width="20%" align="center"><a accesskey="u" href="ch02.html">Nach oben</a></td><td width="40%" align="right">&nbsp;<a accesskey="n" href="ch02s11.html">Weiter</a></td></tr><tr><td width="40%" align="left" valign="top">2.9. E-Mail-Versand aus kivitendo heraus&nbsp;</td><td width="20%" align="center"><a accesskey="h" href="index.html">Zum Anfang</a></td><td width="40%" align="right" valign="top">&nbsp;2.11. OpenDocument-Vorlagen</td></tr></table></div></body></html>
doc/html/ch03s02.html
<code class="varname">invdate</code>
</span></dt><dd><p>Rechnungsdatum</p></dd><dt><span class="term">
<code class="varname">invnumber</code>
</span></dt><dd><p>Rechnungsnummer</p></dd></dl></div></div></div><div class="sect2" title="3.2.10. Variablen in anderen Vorlagen"><div class="titlepage"><div><div><h3 class="title"><a name="dokumentenvorlagen-und-variablen.andere-vorlagen"></a>3.2.10. Variablen in anderen Vorlagen</h3></div></div></div><div class="sect3" title="3.2.10.1. Einführung"><div class="titlepage"><div><div><h4 class="title"><a name="d0e4045"></a>3.2.10.1. Einführung</h4></div></div></div><p>Die Variablen in anderen Vorlagen sind ähnlich wie in der
</span></dt><dd><p>Rechnungsnummer</p></dd></dl></div></div></div><div class="sect2" title="3.2.10. Variablen in anderen Vorlagen"><div class="titlepage"><div><div><h3 class="title"><a name="dokumentenvorlagen-und-variablen.andere-vorlagen"></a>3.2.10. Variablen in anderen Vorlagen</h3></div></div></div><div class="sect3" title="3.2.10.1. Einführung"><div class="titlepage"><div><div><h4 class="title"><a name="d0e4241"></a>3.2.10.1. Einführung</h4></div></div></div><p>Die Variablen in anderen Vorlagen sind ähnlich wie in der
Rechnung. Allerdings heißen die Variablen, die mit
<code class="varname">inv</code> beginnen, jetzt anders. Bei den Angeboten
fangen sie mit <code class="varname">quo</code> für "quotation" an:
doc/html/ch04.html
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Kapitel 4. Entwicklerdokumentation</title><link rel="stylesheet" type="text/css" href="style.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1-RC2"><link rel="home" href="index.html" title="kivitendo: Installation, Konfiguration, Entwicklung"><link rel="up" href="index.html" title="kivitendo: Installation, Konfiguration, Entwicklung"><link rel="prev" href="ch03s03.html" title="3.3. Excel-Vorlagen"><link rel="next" href="ch04s02.html" title="4.2. Entwicklung unter FastCGI"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Kapitel 4. Entwicklerdokumentation</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch03s03.html">Zurück</a>&nbsp;</td><th width="60%" align="center">&nbsp;</th><td width="20%" align="right">&nbsp;<a accesskey="n" href="ch04s02.html">Weiter</a></td></tr></table><hr></div><div class="chapter" title="Kapitel 4. Entwicklerdokumentation"><div class="titlepage"><div><div><h2 class="title"><a name="d0e4645"></a>Kapitel 4. Entwicklerdokumentation</h2></div></div></div><div class="sect1" title="4.1. Globale Variablen"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="devel.globals"></a>4.1. Globale Variablen</h2></div></div></div><div class="sect2" title="4.1.1. Wie sehen globale Variablen in Perl aus?"><div class="titlepage"><div><div><h3 class="title"><a name="d0e4651"></a>4.1.1. Wie sehen globale Variablen in Perl aus?</h3></div></div></div><p>Globale Variablen liegen in einem speziellen namespace namens
<title>Kapitel 4. Entwicklerdokumentation</title><link rel="stylesheet" type="text/css" href="style.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1-RC2"><link rel="home" href="index.html" title="kivitendo: Installation, Konfiguration, Entwicklung"><link rel="up" href="index.html" title="kivitendo: Installation, Konfiguration, Entwicklung"><link rel="prev" href="ch03s03.html" title="3.3. Excel-Vorlagen"><link rel="next" href="ch04s02.html" title="4.2. Entwicklung unter FastCGI"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Kapitel 4. Entwicklerdokumentation</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch03s03.html">Zurück</a>&nbsp;</td><th width="60%" align="center">&nbsp;</th><td width="20%" align="right">&nbsp;<a accesskey="n" href="ch04s02.html">Weiter</a></td></tr></table><hr></div><div class="chapter" title="Kapitel 4. Entwicklerdokumentation"><div class="titlepage"><div><div><h2 class="title"><a name="d0e4841"></a>Kapitel 4. Entwicklerdokumentation</h2></div></div></div><div class="sect1" title="4.1. Globale Variablen"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="devel.globals"></a>4.1. Globale Variablen</h2></div></div></div><div class="sect2" title="4.1.1. Wie sehen globale Variablen in Perl aus?"><div class="titlepage"><div><div><h3 class="title"><a name="d0e4847"></a>4.1.1. Wie sehen globale Variablen in Perl aus?</h3></div></div></div><p>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.</p><p>Daraus ergeben sich folgende Formen:</p><div class="variablelist"><dl><dt><span class="term">
......
<code class="varname">$PACKAGE::form</code>.</p></dd><dt><span class="term">
<code class="literal">local $form</code>
</span></dt><dd><p>Alle Änderungen an <code class="varname">$form</code> werden am Ende
des scopes zurückgesetzt</p></dd></dl></div></div><div class="sect2" title="4.1.2. Warum sind globale Variablen ein Problem?"><div class="titlepage"><div><div><h3 class="title"><a name="d0e4752"></a>4.1.2. Warum sind globale Variablen ein Problem?</h3></div></div></div><p>Das erste Problem ist <span class="productname">FCGI</span>™.</p><p>
des scopes zurückgesetzt</p></dd></dl></div></div><div class="sect2" title="4.1.2. Warum sind globale Variablen ein Problem?"><div class="titlepage"><div><div><h3 class="title"><a name="d0e4948"></a>4.1.2. Warum sind globale Variablen ein Problem?</h3></div></div></div><p>Das erste Problem ist <span class="productname">FCGI</span>™.</p><p>
<span class="productname">SQL-Ledger</span>™ hat fast alles im globalen
namespace abgelegt, und erwartet, dass es da auch wiederzufinden ist.
Unter <span class="productname">FCGI</span>™ müssen diese Sachen aber wieder
......
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.</p></div><div class="sect2" title="4.1.3. Kanonische globale Variablen"><div class="titlepage"><div><div><h3 class="title"><a name="d0e4785"></a>4.1.3. Kanonische globale Variablen</h3></div></div></div><p>Um dieses Problem im Griff zu halten gibt es einige wenige
schnell ein Tippfehler einschleichen.</p></div><div class="sect2" title="4.1.3. Kanonische globale Variablen"><div class="titlepage"><div><div><h3 class="title"><a name="d0e4981"></a>4.1.3. Kanonische globale Variablen</h3></div></div></div><p>Um dieses Problem im Griff zu halten gibt es einige wenige
globale Variablen, die kanonisch sind, d.h. sie haben bestimmte
vorgegebenen Eigenschaften, und alles andere sollte anderweitig
umhergereicht werden.</p><p>Diese Variablen sind im Moment die folgenden neun:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>
......
<code class="varname">$::request</code>
</p></li></ul></div><p>Damit diese nicht erneut als Müllhalde missbraucht werden, im
Folgenden eine kurze Erläuterung der bestimmten vorgegebenen
Eigenschaften (Konventionen):</p><div class="sect3" title="4.1.3.1. $::form"><div class="titlepage"><div><div><h4 class="title"><a name="d0e4849"></a>4.1.3.1. $::form</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Ist ein Objekt der Klasse
Eigenschaften (Konventionen):</p><div class="sect3" title="4.1.3.1. $::form"><div class="titlepage"><div><div><h4 class="title"><a name="d0e5045"></a>4.1.3.1. $::form</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Ist ein Objekt der Klasse
"<code class="classname">Form</code>"</p></li><li class="listitem"><p>Wird nach jedem Request gelöscht</p></li><li class="listitem"><p>Muss auch in Tests und Konsolenscripts vorhanden
sein.</p></li><li class="listitem"><p>Enthält am Anfang eines Requests die Requestparameter vom
User</p></li><li class="listitem"><p>Kann zwar intern über Requestgrenzen ein Datenbankhandle
......
push @{ $form-&gt;{TEMPLATE_ARRAYS}{number} }, $form-&gt;{"partnumber_$i"};
push @{ $form-&gt;{TEMPLATE_ARRAYS}{description} }, $form-&gt;{"description_$i"};
# ...
}</pre></div><div class="sect3" title="4.1.3.2. %::myconfig"><div class="titlepage"><div><div><h4 class="title"><a name="d0e4933"></a>4.1.3.2. %::myconfig</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Das einzige Hash unter den globalen Variablen</p></li><li class="listitem"><p>Wird spätestens benötigt wenn auf die Datenbank
}</pre></div><div class="sect3" title="4.1.3.2. %::myconfig"><div class="titlepage"><div><div><h4 class="title"><a name="d0e5129"></a>4.1.3.2. %::myconfig</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Das einzige Hash unter den globalen Variablen</p></li><li class="listitem"><p>Wird spätestens benötigt wenn auf die Datenbank
zugegriffen wird</p></li><li class="listitem"><p>Wird bei jedem Request neu erstellt.</p></li><li class="listitem"><p>Enthält die Userdaten des aktuellen Logins</p></li><li class="listitem"><p>Sollte nicht ohne Filterung irgendwo gedumpt werden oder
extern serialisiert werden, weil da auch der Datenbankzugriff
für diesen user drinsteht.</p></li><li class="listitem"><p>Enthält unter anderem Listenbegrenzung vclimit,
......
überwiegend die Daten, die sich unter <span class="guimenu">Programm</span>
-&gt; <span class="guimenuitem">Einstellungen</span> befinden, bzw. die
Informationen über den Benutzer die über die
Administrator-Schnittstelle (admin.pl) eingegeben wurden.</p></div><div class="sect3" title="4.1.3.3. $::locale"><div class="titlepage"><div><div><h4 class="title"><a name="d0e4972"></a>4.1.3.3. $::locale</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Objekt der Klasse "Locale"</p></li><li class="listitem"><p>Wird pro Request erstellt</p></li><li class="listitem"><p>Muss auch für Tests und Scripte immer verfügbar
Administrator-Schnittstelle (admin.pl) eingegeben wurden.</p></div><div class="sect3" title="4.1.3.3. $::locale"><div class="titlepage"><div><div><h4 class="title"><a name="d0e5168"></a>4.1.3.3. $::locale</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Objekt der Klasse "Locale"</p></li><li class="listitem"><p>Wird pro Request erstellt</p></li><li class="listitem"><p>Muss auch für Tests und Scripte immer verfügbar
sein.</p></li><li class="listitem"><p>Cached intern über Requestgrenzen hinweg benutzte
Locales</p></li></ul></div><p>Lokalisierung für den aktuellen User. Alle Übersetzungen,
Zahlen- und Datumsformatierungen laufen über dieses Objekt.</p></div><div class="sect3" title="4.1.3.4. $::lxdebug"><div class="titlepage"><div><div><h4 class="title"><a name="d0e4990"></a>4.1.3.4. $::lxdebug</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Objekt der Klasse "LXDebug"</p></li><li class="listitem"><p>Wird global gecached</p></li><li class="listitem"><p>Muss immer verfügbar sein, in nahezu allen
Zahlen- und Datumsformatierungen laufen über dieses Objekt.</p></div><div class="sect3" title="4.1.3.4. $::lxdebug"><div class="titlepage"><div><div><h4 class="title"><a name="d0e5186"></a>4.1.3.4. $::lxdebug</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Objekt der Klasse "LXDebug"</p></li><li class="listitem"><p>Wird global gecached</p></li><li class="listitem"><p>Muss immer verfügbar sein, in nahezu allen
Funktionen</p></li></ul></div><p>
<code class="varname">$::lxdebug</code> stellt Debuggingfunktionen
bereit, wie "<code class="function">enter_sub</code>" und
......
"<code class="function">message</code>" und "<code class="function">dump</code>" mit
denen man flott Informationen ins Log (tmp/kivitendo-debug.log)
packen kann.</p><p>Beispielsweise so:</p><pre class="programlisting">$main::lxdebug-&gt;message(0, 'Meine Konfig:' . Dumper (%::myconfig));
$main::lxdebug-&gt;message(0, 'Wer bin ich? Kunde oder Lieferant:' . $form-&gt;{vc});</pre></div><div class="sect3" title="4.1.3.5. $::auth"><div class="titlepage"><div><div><h4 class="title"><a name="d0e5027"></a>4.1.3.5. $::auth</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Objekt der Klasse "SL::Auth"</p></li><li class="listitem"><p>Wird global gecached</p></li><li class="listitem"><p>Hat eine permanente DB Verbindung zur Authdatenbank</p></li><li class="listitem"><p>Wird nach jedem Request resettet.</p></li></ul></div><p>
$main::lxdebug-&gt;message(0, 'Wer bin ich? Kunde oder Lieferant:' . $form-&gt;{vc});</pre></div><div class="sect3" title="4.1.3.5. $::auth"><div class="titlepage"><div><div><h4 class="title"><a name="d0e5223"></a>4.1.3.5. $::auth</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Objekt der Klasse "SL::Auth"</p></li><li class="listitem"><p>Wird global gecached</p></li><li class="listitem"><p>Hat eine permanente DB Verbindung zur Authdatenbank</p></li><li class="listitem"><p>Wird nach jedem Request resettet.</p></li></ul></div><p>
<code class="varname">$::auth</code> 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.</p></div><div class="sect3" title="4.1.3.6. $::lx_office_conf"><div class="titlepage"><div><div><h4 class="title"><a name="d0e5048"></a>4.1.3.6. $::lx_office_conf</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Objekt der Klasse
Request kurz resettet.</p></div><div class="sect3" title="4.1.3.6. $::lx_office_conf"><div class="titlepage"><div><div><h4 class="title"><a name="d0e5244"></a>4.1.3.6. $::lx_office_conf</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Objekt der Klasse
"<code class="classname">SL::LxOfficeConf</code>"</p></li><li class="listitem"><p>Global gecached</p></li><li class="listitem"><p>Repräsentation der
<code class="filename">config/kivitendo.conf[.default]</code>-Dateien</p></li></ul></div><p>Globale Konfiguration. Configdateien werden zum Start gelesen
und danach nicht mehr angefasst. Es ist derzeit nicht geplant, dass
......
file = /tmp/kivitendo-debug.log</pre><p>ist der Key <code class="varname">file</code> im Programm als
<code class="varname">$::lx_office_conf-&gt;{debug}{file}</code>
erreichbar.</p><div class="warning" title="Warnung" style="margin-left: 0.5in; margin-right: 0.5in;"><table border="0" summary="Warning"><tr><td rowspan="2" align="center" valign="top" width="25"><img alt="[Warnung]" src="../../../../system/docbook-xsl/images/warning.png"></td><th align="left">Warnung</th></tr><tr><td align="left" valign="top"><p>Zugriff auf die Konfiguration erfolgt im Moment über
Hashkeys, sind also nicht gegen Tippfehler abgesichert.</p></td></tr></table></div></div><div class="sect3" title="4.1.3.7. $::instance_conf"><div class="titlepage"><div><div><h4 class="title"><a name="d0e5084"></a>4.1.3.7. $::instance_conf</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Objekt der Klasse
Hashkeys, sind also nicht gegen Tippfehler abgesichert.</p></td></tr></table></div></div><div class="sect3" title="4.1.3.7. $::instance_conf"><div class="titlepage"><div><div><h4 class="title"><a name="d0e5280"></a>4.1.3.7. $::instance_conf</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Objekt der Klasse
"<code class="classname">SL::InstanceConfiguration</code>"</p></li><li class="listitem"><p>wird pro Request neu erstellt</p></li></ul></div><p>Funktioniert wie <code class="varname">$::lx_office_conf</code>,
speichert aber Daten die von der Instanz abhängig sind. Eine Instanz
ist hier eine Mandantendatenbank. Beispielsweise überprüft
</p><pre class="programlisting">$::instance_conf-&gt;get_inventory_system eq 'perpetual'</pre><p>
ob die berüchtigte Bestandsmethode zur Anwendung kommt.</p></div><div class="sect3" title="4.1.3.8. $::dispatcher"><div class="titlepage"><div><div><h4 class="title"><a name="d0e5105"></a>4.1.3.8. $::dispatcher</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Objekt der Klasse
ob die berüchtigte Bestandsmethode zur Anwendung kommt.</p></div><div class="sect3" title="4.1.3.8. $::dispatcher"><div class="titlepage"><div><div><h4 class="title"><a name="d0e5301"></a>4.1.3.8. $::dispatcher</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Objekt der Klasse
"<code class="varname">SL::Dispatcher</code>"</p></li><li class="listitem"><p>wird pro Serverprozess erstellt.</p></li><li class="listitem"><p>enthält Informationen über die technische Verbindung zum
Server</p></li></ul></div><p>Der dritte Punkt ist auch der einzige Grund warum das Objekt
global gespeichert wird. Wird vermutlich irgendwann in einem anderen
Objekt untergebracht.</p></div><div class="sect3" title="4.1.3.9. $::request"><div class="titlepage"><div><div><h4 class="title"><a name="d0e5123"></a>4.1.3.9. $::request</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Hashref (evtl später Objekt)</p></li><li class="listitem"><p>Wird pro Request neu initialisiert.</p></li><li class="listitem"><p>Keine Unterstruktur garantiert.</p></li></ul></div><p>
Objekt untergebracht.</p></div><div class="sect3" title="4.1.3.9. $::request"><div class="titlepage"><div><div><h4 class="title"><a name="d0e5319"></a>4.1.3.9. $::request</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Hashref (evtl später Objekt)</p></li><li class="listitem"><p>Wird pro Request neu initialisiert.</p></li><li class="listitem"><p>Keine Unterstruktur garantiert.</p></li></ul></div><p>
<code class="varname">$::request</code> 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
......
<code class="varname">$::request</code>
</p></li><li class="listitem"><p>Muss ich von anderen Teilen des Programms lesend drauf
zugreifen? Dann <code class="varname">$::request</code>, aber Zugriff über
Wrappermethode</p></li></ul></div></div></div><div class="sect2" title="4.1.4. Ehemalige globale Variablen"><div class="titlepage"><div><div><h3 class="title"><a name="d0e5165"></a>4.1.4. Ehemalige globale Variablen</h3></div></div></div><p>Die folgenden Variablen waren einmal im Programm, und wurden
entfernt.</p><div class="sect3" title="4.1.4.1. $::cgi"><div class="titlepage"><div><div><h4 class="title"><a name="d0e5170"></a>4.1.4.1. $::cgi</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>war nötig, weil cookie Methoden nicht als
Wrappermethode</p></li></ul></div></div></div><div class="sect2" title="4.1.4. Ehemalige globale Variablen"><div class="titlepage"><div><div><h3 class="title"><a name="d0e5361"></a>4.1.4. Ehemalige globale Variablen</h3></div></div></div><p>Die folgenden Variablen waren einmal im Programm, und wurden
entfernt.</p><div class="sect3" title="4.1.4.1. $::cgi"><div class="titlepage"><div><div><h4 class="title"><a name="d0e5366"></a>4.1.4.1. $::cgi</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>war nötig, weil cookie Methoden nicht als
Klassenfunktionen funktionieren</p></li><li class="listitem"><p>Aufruf als Klasse erzeugt Dummyobjekt was im
Klassennamespace gehalten wird und über Requestgrenzen
leaked</p></li><li class="listitem"><p>liegt jetzt unter
<code class="varname">$::request-&gt;{cgi}</code>
</p></li></ul></div></div><div class="sect3" title="4.1.4.2. $::all_units"><div class="titlepage"><div><div><h4 class="title"><a name="d0e5186"></a>4.1.4.2. $::all_units</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>war nötig, weil einige Funktionen in Schleifen zum Teil
</p></li></ul></div></div><div class="sect3" title="4.1.4.2. $::all_units"><div class="titlepage"><div><div><h4 class="title"><a name="d0e5382"></a>4.1.4.2. $::all_units</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>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.</p></li><li class="listitem"><p>Liegt jetzt unter
<code class="varname">$::request-&gt;{cache}{all_units}</code>
</p></li><li class="listitem"><p>Wird nur in
<code class="function">AM-&gt;retrieve_all_units()</code> gesetzt oder
gelesen.</p></li></ul></div></div><div class="sect3" title="4.1.4.3. %::called_subs"><div class="titlepage"><div><div><h4 class="title"><a name="d0e5205"></a>4.1.4.3. %::called_subs</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>wurde benutzt um callsub deep recursions
gelesen.</p></li></ul></div></div><div class="sect3" title="4.1.4.3. %::called_subs"><div class="titlepage"><div><div><h4 class="title"><a name="d0e5401"></a>4.1.4.3. %::called_subs</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>wurde benutzt um callsub deep recursions
abzufangen.</p></li><li class="listitem"><p>Wurde entfernt, weil callsub nur einen Bruchteil der
möglichen Rekursioenen darstellt, und da nie welche
auftreten.</p></li><li class="listitem"><p>komplette recursion protection wurde entfernt.</p></li></ul></div></div></div></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch03s03.html">Zurück</a>&nbsp;</td><td width="20%" align="center">&nbsp;</td><td width="40%" align="right">&nbsp;<a accesskey="n" href="ch04s02.html">Weiter</a></td></tr><tr><td width="40%" align="left" valign="top">3.3. Excel-Vorlagen&nbsp;</td><td width="20%" align="center"><a accesskey="h" href="index.html">Zum Anfang</a></td><td width="40%" align="right" valign="top">&nbsp;4.2. Entwicklung unter FastCGI</td></tr></table></div></body></html>
doc/html/index.html
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>kivitendo: Installation, Konfiguration, Entwicklung</title><link rel="stylesheet" type="text/css" href="style.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1-RC2"><link rel="home" href="index.html" title="kivitendo: Installation, Konfiguration, Entwicklung"><link rel="next" href="ch01.html" title="Kapitel 1. Aktuelle Hinweise"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">kivitendo: Installation, Konfiguration, Entwicklung</th></tr><tr><td width="20%" align="left">&nbsp;</td><th width="60%" align="center">&nbsp;</th><td width="20%" align="right">&nbsp;<a accesskey="n" href="ch01.html">Weiter</a></td></tr></table><hr></div><div lang="de" class="book" title="kivitendo: Installation, Konfiguration, Entwicklung"><div class="titlepage"><div><div><h1 class="title"><a name="kivitendo-documentation"></a>kivitendo: Installation, Konfiguration, Entwicklung</h1></div></div><hr></div><div class="toc"><p><b>Inhaltsverzeichnis</b></p><dl><dt><span class="chapter"><a href="ch01.html">1. Aktuelle Hinweise</a></span></dt><dt><span class="chapter"><a href="ch02.html">2. Installation und Grundkonfiguration</a></span></dt><dd><dl><dt><span class="sect1"><a href="ch02.html#Ben%C3%B6tigte-Software-und-Pakete">2.1. Benötigte Software und Pakete</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch02.html#Betriebssystem">2.1.1. Betriebssystem</a></span></dt><dt><span class="sect2"><a href="ch02.html#Pakete">2.1.2. Pakete</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch02s02.html">2.2. Manuelle Installation des Programmpaketes</a></span></dt><dt><span class="sect1"><a href="ch02s03.html">2.3. kivitendo-Konfigurationsdatei</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch02s03.html#config.config-file.introduction">2.3.1. Einführung</a></span></dt><dt><span class="sect2"><a href="ch02s03.html#config.config-file.sections-parameters">2.3.2. Abschnitte und Parameter</a></span></dt><dt><span class="sect2"><a href="ch02s03.html#config.config-file.prior-versions">2.3.3. Versionen vor 2.6.3</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch02s04.html">2.4. Anpassung der PostgreSQL-Konfiguration</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch02s04.html#Zeichens%C3%A4tze-die-Verwendung-von-UTF-8">2.4.1. Zeichensätze/die Verwendung von UTF-8</a></span></dt><dt><span class="sect2"><a href="ch02s04.html#%C3%84nderungen-an-Konfigurationsdateien">2.4.2. Änderungen an Konfigurationsdateien</a></span></dt><dt><span class="sect2"><a href="ch02s04.html#Erweiterung-f%C3%BCr-servergespeicherte-Prozeduren">2.4.3. Erweiterung für servergespeicherte Prozeduren</a></span></dt><dt><span class="sect2"><a href="ch02s04.html#Datenbankbenutzer-anlegen">2.4.4. Datenbankbenutzer anlegen</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch02s05.html">2.5. Webserver-Konfiguration</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch02s05.html#d0e589">2.5.1. Grundkonfiguration mittels CGI</a></span></dt><dt><span class="sect2"><a href="ch02s05.html#Apache-Konfiguration.FCGI">2.5.2. Konfiguration für FastCGI/FCGI</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch02s06.html">2.6. Der Task-Server</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch02s06.html#Konfiguration-des-Task-Servers">2.6.1. Verfügbare und notwendige Konfigurationsoptionen</a></span></dt><dt><span class="sect2"><a href="ch02s06.html#Einbinden-in-den-Boot-Prozess">2.6.2. Automatisches Starten des Task-Servers beim Booten</a></span></dt><dt><span class="sect2"><a href="ch02s06.html#Prozesskontrolle">2.6.3. Wie der Task-Server gestartet und beendet wird</a></span></dt><dt><span class="sect2"><a href="ch02s06.html#Prozesskontrolle2">2.6.4. Task-Server mit mehreren Mandanten</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch02s07.html">2.7. Benutzerauthentifizierung und Administratorpasswort</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch02s07.html#Grundlagen-zur-Benutzerauthentifizierung">2.7.1. Grundlagen zur Benutzerauthentifizierung</a></span></dt><dt><span class="sect2"><a href="ch02s07.html#Administratorpasswort">2.7.2. Administratorpasswort</a></span></dt><dt><span class="sect2"><a href="ch02s07.html#Authentifizierungsdatenbank">2.7.3. Authentifizierungsdatenbank</a></span></dt><dt><span class="sect2"><a href="ch02s07.html#Passwort%C3%BCberpr%C3%BCfung">2.7.4. Passwortüberprüfung</a></span></dt><dt><span class="sect2"><a href="ch02s07.html#Name-des-Session-Cookies">2.7.5. Name des Session-Cookies</a></span></dt><dt><span class="sect2"><a href="ch02s07.html#Anlegen-der-Authentifizierungsdatenbank">2.7.6. Anlegen der Authentifizierungsdatenbank</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch02s08.html">2.8. Benutzer- und Gruppenverwaltung</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch02s08.html#Zusammenh%C3%A4nge">2.8.1. Zusammenhänge</a></span></dt><dt><span class="sect2"><a href="ch02s08.html#Datenbanken-anlegen">2.8.2. Datenbanken anlegen</a></span></dt><dt><span class="sect2"><a href="ch02s08.html#Gruppen-anlegen">2.8.3. Gruppen anlegen</a></span></dt><dt><span class="sect2"><a href="ch02s08.html#Benutzer-anlegen">2.8.4. Benutzer anlegen</a></span></dt><dt><span class="sect2"><a href="ch02s08.html#Gruppenmitgliedschaften-verwalten">2.8.5. Gruppenmitgliedschaften verwalten</a></span></dt><dt><span class="sect2"><a href="ch02s08.html#Migration-alter-Installationen">2.8.6. Migration alter Installationen</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch02s09.html">2.9. E-Mail-Versand aus kivitendo heraus</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch02s09.html#config.sending-email.sendmail">2.9.1. Versand über lokalen E-Mail-Server</a></span></dt><dt><span class="sect2"><a href="ch02s09.html#config.sending-email.smtp">2.9.2. Versand über einen SMTP-Server</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch02s10.html">2.10. Drucken mit kivitendo</a></span></dt><dt><span class="sect1"><a href="ch02s11.html">2.11. OpenDocument-Vorlagen</a></span></dt><dt><span class="sect1"><a href="ch02s12.html">2.12. Konfiguration zur Einnahmenüberschussrechnung/Bilanzierung:
<title>kivitendo: Installation, Konfiguration, Entwicklung</title><link rel="stylesheet" type="text/css" href="style.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1-RC2"><link rel="home" href="index.html" title="kivitendo: Installation, Konfiguration, Entwicklung"><link rel="next" href="ch01.html" title="Kapitel 1. Aktuelle Hinweise"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">kivitendo: Installation, Konfiguration, Entwicklung</th></tr><tr><td width="20%" align="left">&nbsp;</td><th width="60%" align="center">&nbsp;</th><td width="20%" align="right">&nbsp;<a accesskey="n" href="ch01.html">Weiter</a></td></tr></table><hr></div><div lang="de" class="book" title="kivitendo: Installation, Konfiguration, Entwicklung"><div class="titlepage"><div><div><h1 class="title"><a name="kivitendo-documentation"></a>kivitendo: Installation, Konfiguration, Entwicklung</h1></div></div><hr></div><div class="toc"><p><b>Inhaltsverzeichnis</b></p><dl><dt><span class="chapter"><a href="ch01.html">1. Aktuelle Hinweise</a></span></dt><dt><span class="chapter"><a href="ch02.html">2. Installation und Grundkonfiguration</a></span></dt><dd><dl><dt><span class="sect1"><a href="ch02.html#Ben%C3%B6tigte-Software-und-Pakete">2.1. Benötigte Software und Pakete</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch02.html#Betriebssystem">2.1.1. Betriebssystem</a></span></dt><dt><span class="sect2"><a href="ch02.html#Pakete">2.1.2. Pakete</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch02s02.html">2.2. Manuelle Installation des Programmpaketes</a></span></dt><dt><span class="sect1"><a href="ch02s03.html">2.3. kivitendo-Konfigurationsdatei</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch02s03.html#config.config-file.introduction">2.3.1. Einführung</a></span></dt><dt><span class="sect2"><a href="ch02s03.html#config.config-file.sections-parameters">2.3.2. Abschnitte und Parameter</a></span></dt><dt><span class="sect2"><a href="ch02s03.html#config.config-file.prior-versions">2.3.3. Versionen vor 2.6.3</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch02s04.html">2.4. Anpassung der PostgreSQL-Konfiguration</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch02s04.html#Zeichens%C3%A4tze-die-Verwendung-von-UTF-8">2.4.1. Zeichensätze/die Verwendung von UTF-8</a></span></dt><dt><span class="sect2"><a href="ch02s04.html#%C3%84nderungen-an-Konfigurationsdateien">2.4.2. Änderungen an Konfigurationsdateien</a></span></dt><dt><span class="sect2"><a href="ch02s04.html#Erweiterung-f%C3%BCr-servergespeicherte-Prozeduren">2.4.3. Erweiterung für servergespeicherte Prozeduren</a></span></dt><dt><span class="sect2"><a href="ch02s04.html#Datenbankbenutzer-anlegen">2.4.4. Datenbankbenutzer anlegen</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch02s05.html">2.5. Webserver-Konfiguration</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch02s05.html#d0e592">2.5.1. Grundkonfiguration mittels CGI</a></span></dt><dt><span class="sect2"><a href="ch02s05.html#Apache-Konfiguration.FCGI">2.5.2. Konfiguration für FastCGI/FCGI</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch02s06.html">2.6. Der Task-Server</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch02s06.html#Konfiguration-des-Task-Servers">2.6.1. Verfügbare und notwendige Konfigurationsoptionen</a></span></dt><dt><span class="sect2"><a href="ch02s06.html#Einbinden-in-den-Boot-Prozess">2.6.2. Automatisches Starten des Task-Servers beim Booten</a></span></dt><dt><span class="sect2"><a href="ch02s06.html#Prozesskontrolle">2.6.3. Wie der Task-Server gestartet und beendet wird</a></span></dt><dt><span class="sect2"><a href="ch02s06.html#Prozesskontrolle2">2.6.4. Task-Server mit mehreren Mandanten</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch02s07.html">2.7. Benutzerauthentifizierung und Administratorpasswort</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch02s07.html#Grundlagen-zur-Benutzerauthentifizierung">2.7.1. Grundlagen zur Benutzerauthentifizierung</a></span></dt><dt><span class="sect2"><a href="ch02s07.html#Administratorpasswort">2.7.2. Administratorpasswort</a></span></dt><dt><span class="sect2"><a href="ch02s07.html#Authentifizierungsdatenbank">2.7.3. Authentifizierungsdatenbank</a></span></dt><dt><span class="sect2"><a href="ch02s07.html#Passwort%C3%BCberpr%C3%BCfung">2.7.4. Passwortüberprüfung</a></span></dt><dt><span class="sect2"><a href="ch02s07.html#Name-des-Session-Cookies">2.7.5. Name des Session-Cookies</a></span></dt><dt><span class="sect2"><a href="ch02s07.html#Anlegen-der-Authentifizierungsdatenbank">2.7.6. Anlegen der Authentifizierungsdatenbank</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch02s08.html">2.8. Benutzer- und Gruppenverwaltung</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch02s08.html#Zusammenh%C3%A4nge">2.8.1. Zusammenhänge</a></span></dt><dt><span class="sect2"><a href="ch02s08.html#Datenbanken-anlegen">2.8.2. Datenbanken anlegen</a></span></dt><dt><span class="sect2"><a href="ch02s08.html#Gruppen-anlegen">2.8.3. Gruppen anlegen</a></span></dt><dt><span class="sect2"><a href="ch02s08.html#Benutzer-anlegen">2.8.4. Benutzer anlegen</a></span></dt><dt><span class="sect2"><a href="ch02s08.html#Gruppenmitgliedschaften-verwalten">2.8.5. Gruppenmitgliedschaften verwalten</a></span></dt><dt><span class="sect2"><a href="ch02s08.html#Migration-alter-Installationen">2.8.6. Migration alter Installationen</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch02s09.html">2.9. E-Mail-Versand aus kivitendo heraus</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch02s09.html#config.sending-email.sendmail">2.9.1. Versand über lokalen E-Mail-Server</a></span></dt><dt><span class="sect2"><a href="ch02s09.html#config.sending-email.smtp">2.9.2. Versand über einen SMTP-Server</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch02s10.html">2.10. Drucken mit kivitendo</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch02s10.html#Vorlagenverzeichnis-anlegen">2.10.1. Vorlagenverzeichnis anlegen</a></span></dt><dt><span class="sect2"><a href="ch02s10.html#Standard">2.10.2. Default</a></span></dt><dt><span class="sect2"><a href="ch02s10.html#f-tex">2.10.3. f-tex</a></span></dt><dt><span class="sect2"><a href="ch02s10.html#RB">2.10.4. RB</a></span></dt><dt><span class="sect2"><a href="ch02s10.html#Allgemeine Hinweise zu LaTeX">2.10.5. Allgemeine Hinweise zu LaTeX Vorlagen</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch02s11.html">2.11. OpenDocument-Vorlagen</a></span></dt><dt><span class="sect1"><a href="ch02s12.html">2.12. Konfiguration zur Einnahmenüberschussrechnung/Bilanzierung:
EUR</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch02s12.html#config.eur.introduction">2.12.1. Einführung</a></span></dt><dt><span class="sect2"><a href="ch02s12.html#config.eur.parameters">2.12.2. Konfigurationsparameter</a></span></dt><dt><span class="sect2"><a href="ch02s12.html#config.eur.setting-parameters">2.12.3. Festlegen der Parameter</a></span></dt><dt><span class="sect2"><a href="ch02s12.html#config.eur.inventory-system-perpetual">2.12.4. Bemerkungen zu Bestandsmethode</a></span></dt><dt><span class="sect2"><a href="ch02s12.html#config.eur.knonw-issues">2.12.5. Bekannte Probleme</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch02s13.html">2.13. SKR04 19% Umstellung für innergemeinschaftlichen Erwerb</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch02s13.html#config.skr04-update-3804.introduction">2.13.1. Einführung</a></span></dt><dt><span class="sect2"><a href="ch02s13.html#config.skr04-update-3804.create-chart">2.13.2. Konto 3804 manuell anlegen</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch02s14.html">2.14. Einstellungen pro Mandant</a></span></dt><dt><span class="sect1"><a href="ch02s15.html">2.15. kivitendo ERP verwenden</a></span></dt></dl></dd><dt><span class="chapter"><a href="ch03.html">3. Features und Funktionen</a></span></dt><dd><dl><dt><span class="sect1"><a href="ch03.html#features.periodic-invoices">3.1. Wiederkehrende Rechnungen</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch03.html#features.periodic-invoices.introduction">3.1.1. Einführung</a></span></dt><dt><span class="sect2"><a href="ch03.html#features.periodic-invoices.configuration">3.1.2. Konfiguration</a></span></dt><dt><span class="sect2"><a href="ch03.html#features.periodic-invoices.reports">3.1.3. Auflisten</a></span></dt><dt><span class="sect2"><a href="ch03.html#features.periodic-invoices.task-server">3.1.4. Erzeugung der eigentlichen Rechnungen</a></span></dt><dt><span class="sect2"><a href="ch03.html#features.periodic-invoices.create-for-current-month">3.1.5. Erste Rechnung für aktuellen Monat erstellen</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch03s02.html">3.2. Dokumentenvorlagen und verfügbare Variablen</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch03s02.html#dokumentenvorlagen-und-variablen.einf%C3%BChrung">3.2.1. Einführung</a></span></dt><dt><span class="sect2"><a href="ch03s02.html#dokumentenvorlagen-und-variablen.variablen-ausgeben">3.2.2. Variablen ausgeben</a></span></dt><dt><span class="sect2"><a href="ch03s02.html#dokumentenvorlagen-und-variablen.verwendung-in-druckbefehlen">3.2.3. Verwendung in Druckbefehlen</a></span></dt><dt><span class="sect2"><a href="ch03s02.html#dokumentenvorlagen-und-variablen.tag-style">3.2.4. Anfang und Ende der Tags verändern</a></span></dt><dt><span class="sect2"><a href="ch03s02.html#dokumentenvorlagen-und-variablen.zuordnung-dateinamen">3.2.5. Zuordnung von den Dateinamen zu den Funktionen</a></span></dt><dt><span class="sect2"><a href="ch03s02.html#dokumentenvorlagen-und-variablen.dateinamen-erweitert">3.2.6. Sprache, Drucker und E-Mail</a></span></dt><dt><span class="sect2"><a href="ch03s02.html#dokumentenvorlagen-und-variablen.allgemeine-variablen">3.2.7. Allgemeine Variablen, die in allen Vorlagen vorhanden
sind</a></span></dt><dt><span class="sect2"><a href="ch03s02.html#dokumentenvorlagen-und-variablen.invoice">3.2.8. Variablen in Rechnungen</a></span></dt><dt><span class="sect2"><a href="ch03s02.html#dokumentenvorlagen-und-variablen.dunning">3.2.9. Variablen in Mahnungen und Rechnungen über Mahngebühren</a></span></dt><dt><span class="sect2"><a href="ch03s02.html#dokumentenvorlagen-und-variablen.andere-vorlagen">3.2.10. Variablen in anderen Vorlagen</a></span></dt><dt><span class="sect2"><a href="ch03s02.html#dokumentenvorlagen-und-variablen.bloecke">3.2.11. Blöcke, bedingte Anweisungen und Schleifen</a></span></dt><dt><span class="sect2"><a href="ch03s02.html#dokumentenvorlagen-und-variablen.markup">3.2.12. Markup-Code zur Textformatierung innerhalb von
Formularen</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch03s03.html">3.3. Excel-Vorlagen</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch03s03.html#excel-templates.summary">3.3.1. Zusammenfassung</a></span></dt><dt><span class="sect2"><a href="ch03s03.html#excel-templates.usage">3.3.2. Bedienung</a></span></dt><dt><span class="sect2"><a href="ch03s03.html#excel-templates.syntax">3.3.3. Variablensyntax</a></span></dt><dt><span class="sect2"><a href="ch03s03.html#excel-templates.limitations">3.3.4. Einschränkungen</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="ch04.html">4. Entwicklerdokumentation</a></span></dt><dd><dl><dt><span class="sect1"><a href="ch04.html#devel.globals">4.1. Globale Variablen</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch04.html#d0e4651">4.1.1. Wie sehen globale Variablen in Perl aus?</a></span></dt><dt><span class="sect2"><a href="ch04.html#d0e4752">4.1.2. Warum sind globale Variablen ein Problem?</a></span></dt><dt><span class="sect2"><a href="ch04.html#d0e4785">4.1.3. Kanonische globale Variablen</a></span></dt><dt><span class="sect2"><a href="ch04.html#d0e5165">4.1.4. Ehemalige globale Variablen</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch04s02.html">4.2. Entwicklung unter FastCGI</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch04s02.html#devel.fcgi.general">4.2.1. Allgemeines</a></span></dt><dt><span class="sect2"><a href="ch04s02.html#devel.fcgi.exiting">4.2.2. Programmende und Ausnahmen</a></span></dt><dt><span class="sect2"><a href="ch04s02.html#devel.fcgi.globals">4.2.3. Globale Variablen</a></span></dt><dt><span class="sect2"><a href="ch04s02.html#devel.fcgi.performance">4.2.4. Performance und Statistiken</a></span></dt><dt><span class="sect2"><a href="ch04s02.html#devel.fcgi.known-issues">4.2.5. Bekannte Probleme</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch04s03.html">4.3. SQL-Upgradedateien</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch04s03.html#db-upgrade-files.introduction">4.3.1. Einführung</a></span></dt><dt><span class="sect2"><a href="ch04s03.html#db-upgrade-files.format">4.3.2. Format der Kontrollinformationen</a></span></dt><dt><span class="sect2"><a href="ch04s03.html#db-upgrade-files.dbupgrade-tool">4.3.3. Hilfsscript dbupgrade2_tool.pl</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch04s04.html">4.4. Translations and languages</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch04s04.html#translations-languages.introduction">4.4.1. Introduction</a></span></dt><dt><span class="sect2"><a href="ch04s04.html#translations-languages.file-structure">4.4.2. File structure</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch04s05.html">4.5. Die kivitendo-Test-Suite</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch04s05.html#devel.testsuite.intro">4.5.1. Einführung</a></span></dt><dt><span class="sect2"><a href="ch04s05.html#devel.testsuite.prerequisites">4.5.2. Voraussetzungen</a></span></dt><dt><span class="sect2"><a href="ch04s05.html#devel.testsuite.execution">4.5.3.
Formularen</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch03s03.html">3.3. Excel-Vorlagen</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch03s03.html#excel-templates.summary">3.3.1. Zusammenfassung</a></span></dt><dt><span class="sect2"><a href="ch03s03.html#excel-templates.usage">3.3.2. Bedienung</a></span></dt><dt><span class="sect2"><a href="ch03s03.html#excel-templates.syntax">3.3.3. Variablensyntax</a></span></dt><dt><span class="sect2"><a href="ch03s03.html#excel-templates.limitations">3.3.4. Einschränkungen</a></span></dt></dl></dd></dl></dd><dt><span class="chapter"><a href="ch04.html">4. Entwicklerdokumentation</a></span></dt><dd><dl><dt><span class="sect1"><a href="ch04.html#devel.globals">4.1. Globale Variablen</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch04.html#d0e4847">4.1.1. Wie sehen globale Variablen in Perl aus?</a></span></dt><dt><span class="sect2"><a href="ch04.html#d0e4948">4.1.2. Warum sind globale Variablen ein Problem?</a></span></dt><dt><span class="sect2"><a href="ch04.html#d0e4981">4.1.3. Kanonische globale Variablen</a></span></dt><dt><span class="sect2"><a href="ch04.html#d0e5361">4.1.4. Ehemalige globale Variablen</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch04s02.html">4.2. Entwicklung unter FastCGI</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch04s02.html#devel.fcgi.general">4.2.1. Allgemeines</a></span></dt><dt><span class="sect2"><a href="ch04s02.html#devel.fcgi.exiting">4.2.2. Programmende und Ausnahmen</a></span></dt><dt><span class="sect2"><a href="ch04s02.html#devel.fcgi.globals">4.2.3. Globale Variablen</a></span></dt><dt><span class="sect2"><a href="ch04s02.html#devel.fcgi.performance">4.2.4. Performance und Statistiken</a></span></dt><dt><span class="sect2"><a href="ch04s02.html#devel.fcgi.known-issues">4.2.5. Bekannte Probleme</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch04s03.html">4.3. SQL-Upgradedateien</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch04s03.html#db-upgrade-files.introduction">4.3.1. Einführung</a></span></dt><dt><span class="sect2"><a href="ch04s03.html#db-upgrade-files.format">4.3.2. Format der Kontrollinformationen</a></span></dt><dt><span class="sect2"><a href="ch04s03.html#db-upgrade-files.dbupgrade-tool">4.3.3. Hilfsscript dbupgrade2_tool.pl</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch04s04.html">4.4. Translations and languages</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch04s04.html#translations-languages.introduction">4.4.1. Introduction</a></span></dt><dt><span class="sect2"><a href="ch04s04.html#translations-languages.file-structure">4.4.2. File structure</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch04s05.html">4.5. Die kivitendo-Test-Suite</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch04s05.html#devel.testsuite.intro">4.5.1. Einführung</a></span></dt><dt><span class="sect2"><a href="ch04s05.html#devel.testsuite.prerequisites">4.5.2. Voraussetzungen</a></span></dt><dt><span class="sect2"><a href="ch04s05.html#devel.testsuite.execution">4.5.3.
Existierende Tests ausführen
</a></span></dt><dt><span class="sect2"><a href="ch04s05.html#devel.testsuite.meaning_of_scripts">4.5.4.
Bedeutung der verschiedenen Test-Scripte
templates/print/f-tex/README
README lx-office Fancy-LaTeX (f-tex)
# Revision 1.1-u (03.02.2012)
# Revision 1.0-u (16.11.2011)
# Revision 0.9 (13.11.2011)
# Revision 0.8 (12.09.2011)
# Revision 0.7 (12.07.2011)
# Revision 0.6 (16.06.2011)
# Revision 0.5 (15.04.2011)
# Revision 0.4 (14.02.2011)
# Revision 0.3 (03.01.2011)
# Revision 0.2 (24.12.2010)
# Revision 0.1 (03.11.2009)
# Feature Uebersicht
- einfach Nutzung durch mitgeliefertes Setup-Script
- Keine Retundanz. Es wird ein und die selbe Latex-Vorlage fuer alle
briefartigen Dokumente verwendet. Also Angebot, Rechnung,
Performarechnung, Lieferschein, aber eben nicht fuer Paketaufkleber
etc..
- Leichte Anpassung an das Firmen Layout durch verwendung eines Hintergrund-PDF
dieses kann leicht mit dem eigenen Lieblingsprogramm erstellt werden
(Openoffice, Inkscape, Gimp, Adobe*)
- Hintergrundpdf um schaltbar auf "nur erste Seite" (default) oder "alle Seiten"
(option "bgPdfFirstPageOnly" in Datei letter.lco)
- Hintergrundpdf fuer Ausdruck auf bereits bedrucktem Briefpapier Abschaltbar,
es wird dann nur bei per email versendeten Dokumenten eingebunden.
(Option "bgPdfEmailOnly" in Datei letter.lco)
- Nutzung der Layout-Funktionen von Latex fuer Seitenumbruch,
wiederholung von Kopfzeilen, Zwischensummen etc. (danke an Kai-Martin fuer
die Vorarbeit)
- Anzeige des Empfaengerlandes im Adressfeld nur, wenn es vom Land des
eigenen Unternehmens abweicht (also die Rechnung das Land verlaesst).
- Multisprachfaehig leicht um weitere Sprachen zu erweitern, alle
Übersetzungen in der Datei translatinos.tex.
- Auflistung von Bruttopreisen fuer Endverbraucher.
# die Installation
Wenn es noch keine LaTeX installation gibt, installiere die folgenden Pakete
(Debian)
aptitude install \
texlive-base-bin \
texlive-latex-recommended \
texlive-fonts-recommended \
texlive-latex-extra \
texlive-lang-german \
texlive-generic-extra
Die Abhaengigkeiten kann man mit
/scripts/installation_check.pl -l pruefen (z.Z. noch nicht eingecheckt)
Ein Vorlagenverzeichniss kannst Du direkt unter admin.pl Benutzeradministration erstellen:
Benutze Vorlagen: f-tex
Erzeuge Vorlagen, Name: <DEIN_WUNSCHNAME>
Das Verzeichniss templates muss dafuer fuer den Webserver schreibbar sein.
Erstelle eine pdf-Hintergrund Datei und verlinke sie nach ./letter_head.pdf
Editiere den Bereich "settings" in der datei letter.lco ""
# oder etwas Detaillierter:
Es wird eine Datei sample.lco erstellt und diese nach letter.lco verlinkt.
Eigentlich ist dies die Datei die fuer die Firmenspezifischen Anpassungen
gedacht ist. Da die Einstiegshuerde in LaTeX nicht ganz niedrig ist, wird in
dieser Datei auf ein Hintergrundpdf verwiesen. Ich empfehle ueber dieses pdf
die persoenlichen Layoutanpassungen vorzunehmen und sample.lco unveraendert zu
lassen. Die die Anpassung ueber eine *.lco Datei die letztlich auf letter.lco
verlinkt ist ist aber auch moeglich.
Es wird eine Datei sample_head.pdf mit ausgeliefert, diese wird nach
letter_head.pdf verlinkt. Damit gibt es schon mal eine Funktionsfaehige
Vorlage. Schau Dir nach Abschluss der Installation die Datei sample_haed.pdf
an und erstelle ein entsprechendes pdf passend zum Briefkopf Deiner Firma,
diese dann im Template Verzeichniss ablegen und statt sample_head.pdf nach
letter_head.pdf verlinken.
letzlich muss ./letter_head.pdf auf das passende Hintergrundpdf verweisen,
welches gewuenschten Briefkopf enthaelt. Bei Updates oder nach erneutem
Es wird eine Datei mydata.tex.example ausgeliefert die nach mytdata.tex
verlinkt ist. Bei verwendetem Hintergrundpdf wird nur der Eintrag fuer das
Land verwendet die Datei muss also nicht angefasst werden. Die Anderen Werte
sind fuer das Modul lp (Label Print in erp -- zur Zeit nicht im
oeffentlichen Zweig).
Alle Anpassungen zum Briefkopf, Fusszeilen, Firmenlogos, etc.
sollten ueber die Hintergrund pdf datei oder die *.lco Datei erfolgen.
# einheitliche Latex-Vorlagen -- Background
Das Konzept von lx-office sieht vor, fuer jedes Dokument
(Auftragsbestaetigung, Lieferschein, Rechnung, etc.) eine
Latex-Vorlage vorzuhalten, dies ist sehr Wartungsunfreundlich. Auch
das Einlesen einer einheitlichen Quelle fuer den Briefkopf bringt nur
bedingte Vorteile, da hier leicht die Pflege der Artikel-Tabellen aus
dem Ruder laeuft. Bei dem vorliegenden Ansatz wird fuer alle
Briefartigen Dokumente mit Artikel-Tabellen eine einheitliche
Latexvorlage verwendet, welche ueber Codeweichen die Besonderheiten
der jeweiligen Dokumente Beruecksichtigt
- Tabellen mit oder ohne Preis
- Sprache der Tabellenueberschriften etc.
- Anpassung der Bezugs-Zeile (z.B. Rechnungsnummer versus
Angebotsnummer)
- Darstellung von Brutto oder Netto-Preisen in der Auflistung
(Endverbraucher versus Gewerblicher Kunde)
Seit Version 2.7 ist das ohne Kunstgriff moeglich, da im bei nicht vorhanden
Dokumenten auf default.tex zurueckgegriffen wird.
Nachteil:
Ja, alles hat seinen Preis ...
Latex hat ohnehin eine sehr steile Lehrnkurve. Die Datei letter.tex
ist sehr komplex und verstaerkt damit diesen Effekt noch einmal erheblich.
Wer Latex-Erfahrung hat, oder geuebt ist Scriptsparachen nachzuvollziehen kann
natuerlich auch innerhalb der Tabellendarstellung gut persoenliche Anpassungen
vornehmen. Aber man kann sich hier bei Veraenderungen sehr schnell haeftig in
den Fuss schiessen.
Wer nicht so tief in die Materie einsteigen will oder leicht zu
frustrieren ist, sollte sein Hintergrund PDF auf Basis der mitglieferten
Datei sample_head.pdf erstellen, und sich an der Form der dargestellten Tabellen
wie sie ausgeliefert werden, erfreuen.
Kleiner Tipp:
Nicht zu viel auf einmal wollen, lieber kleine kontinuierliche
Schritte gehen.
Alternativ kann man sich natuerlich fuer die Latex-Vorlagen
professionelle Hilfe hohlen.
Bruttopreise fuer Endvorbraucher
Der auszuweisende Bruttopreis wird innerhalb der LaTeX Umgebung berechnet.
- Background:
es gibt zwar ein Feld um bei Auftraegen "alle Preise Brutto" auszuwaehlen,
aber:
- hierfuer muessen die Preise auch in Brutto in der Datenbank stehen
(ja -- das laesst sich ueber die Preisgruppen und die Zuordung einer Default-Preisgruppe
handhaben)
- man darf beim Anlegen des Vorgangs nicht vergessen Dieses Haekchen zu setzen.
(das ist in der Praxis wenn man sowohl Endverbraucher- wie Gewerbekunden beliefert
der eigentliche Knackpunkt)
Es gibt mit f-tex eine weitere Alternative. Die Information ob Brutto oder
Nettorechnung wird mit den Zahlarten verknuepft. Zahlarten bei denen
Rechnungen, Angebote, etc, in Brutto ausgegeben werden sollen enden mit "_E"
(fuer Endverbraucher) Falls identische Zahlarten fuer Gewerbekunden und
Endverbraucher vorhanden sind legt man diese einfach doppelt an (einmal mit
der Namensendung "_E")
- Gewinn:
- die Entscheidung ob Netopreise ausgewiesen werden ist nicht mehr fix
mit einer Preisliste Verbunden.
- die Default-Zahlart kann im Kundendatensatz hinterlegt werden und man
muss nicht mehr daran denken "alle Preise Netto" auszuwaehlen.
- Die Entscheidung ob Netto/Oder Bruttopreise ausgewiesen werden kann direkt
beim Drucken reviediert werden, ohne dass sich der Auftragswert aendert.
Lieferadressen
- in Lieferscheinen kommen shipto* -Variablen im Adressfeld zum Einsatz
- wenn die shipto*variable leer ist wird die entsprechende
Adressvariable eingesetzt. Wenn Also die Lieferadresse in Strasse,
Hausnummer und Ort abweicht, muessen auch nur diese Felder in der
Lieferadresse ausgefuellt werden. Fuer den Firmenname wird der Wert der
Hauptadresse angezeigt.
Troubleshooting -- Fehler suchen:
Wenn sich das Problem nicht auf Grund der ausgabe im Webbrowser verifizieren laesst:
editiere [flxo-home]/config/lx_office.conf und aendere "keep_tmp_files" auf 1
keep_temp_files = 1;
bei fastcgi oder mod_perl den Webserver neu Starten
Nochmal einen Druckversuch im Webfrontend ausloesen
wechsele in das users Verzeichnis von lxo
cd [lxo-home]/users
LaTeX Suchpfad anpassen:
export TEXINPUTS=".:[lxo-home]/templates/[aktuelles_template_verzeichniss]:"
Finde herraus welche datei lxo beim letzten Durchlauf erstellt hat
ls -lahtr ./1*.tex
Es sollte die letzte Datei ganz unten sein
fuer besseren Hinweis auf Fehler texdatei nochmals uebersetzen
pdflatex ./1*.tex
in der *.tex datei nach dem Fehler suchen.

Auch abrufbar als: Unified diff