Revision dda4cde1
Von Moritz Bunkus vor etwa 13 Jahren hinzugefügt
doc/dokumentation.xml | ||
---|---|---|
url="http://www.lx-office.org/forum/">http://www.lx-office.org/forum/</ulink></para>
|
||
</listitem>
|
||
</itemizedlist>
|
||
|
||
<!-- -->
|
||
</chapter>
|
||
|
||
<chapter id="config">
|
||
... | ... | |
|
||
<programlisting>local all lxoffice password
|
||
host all lxoffice 127.0.0.1 255.255.255.255 password</programlisting>
|
||
|
||
<!-- -->
|
||
</sect2>
|
||
|
||
<sect2 id="Erweiterung-für-servergespeicherte-Prozeduren">
|
||
... | ... | |
führen Sie die folgenden Kommandos aus:</para>
|
||
|
||
<programlisting>create language 'plpgsql';</programlisting>
|
||
<!-- -->
|
||
</sect2>
|
||
|
||
<sect2 id="Datenbankbenutzer-anlegen">
|
||
... | ... | |
<para>Wenn Sie später einen Datenbankzugriff konfigurieren, verändern
|
||
Sie den evtl. voreingestellten Benutzer “postgres” auf “lxoffice” bzw.
|
||
den hier gewählten Benutzernamen.</para>
|
||
|
||
<!-- -->
|
||
</sect2>
|
||
</sect1>
|
||
|
||
... | ... | |
|
||
<para>Dieselben Optionen können auch für die SystemV-basierenden
|
||
Runlevel-Scripte benutzt werden (siehe oben).</para>
|
||
|
||
<!-- -->
|
||
</sect2>
|
||
</sect1>
|
||
|
||
... | ... | |
<para>Informationen über die Einrichtung der Benutzerauthentifizierung,
|
||
über die Verwaltung von Gruppen und weitere Einstellungen</para>
|
||
|
||
<!-- -->
|
||
|
||
<sect2 id="Grundlagen-zur-Benutzerauthentifizierung">
|
||
<title>Grundlagen zur Benutzerauthentifizierung</title>
|
||
|
||
... | ... | |
|
||
<para><ulink
|
||
url="http://localhost/lx-erp/admin.pl">http://localhost/lx-erp/admin.pl</ulink></para>
|
||
|
||
<!-- -->
|
||
</sect2>
|
||
</sect1>
|
||
|
||
... | ... | |
Mitglied in dieser Gruppe. Damit wird das Verhalten von Lx-Office bis
|
||
Version 2.4.3 inklusive wiederhergestellt, und die Benutzer können
|
||
sich sofort wieder anmelden und mit dem System arbeiten.</para>
|
||
|
||
<!-- -->
|
||
</sect2>
|
||
</sect1>
|
||
|
||
... | ... | |
<literal>pdflatex</literal>), und stellen Sie sicher, dass pdflatex
|
||
(oder das von Ihnen verwendete System) vom Webserver ausgeführt werden
|
||
darf.</para>
|
||
|
||
<!-- -->
|
||
</sect1>
|
||
|
||
<sect1 id="OpenDocument-Vorlagen">
|
||
... | ... | |
sein. Dieses wurde bereits erledigt (siehe <xref
|
||
linkend="Manuelle-Installation-des-Programmpaketes"/>), kann aber erneut
|
||
überprüft werden, wenn die Konvertierung nach PDF fehlschlägt.</para>
|
||
|
||
<!-- -->
|
||
</sect1>
|
||
|
||
<sect1 id="config.eur">
|
||
... | ... | |
<para>
|
||
Bei bestimmten Berichten kann man derzeit noch inviduell einstellen, ob man nach Ist- oder Sollversteuerung auswertet, und es werden
|
||
im Code Variablen wie $accrual oder $cash gesetzt. Diese Codestellen wurden noch nicht angepasst, sondern nur die, wo bisher
|
||
die Konfigurationsvariable <varname>$::lx_office_conf{system}->{eur}</varname> ausgewertet wurde.
|
||
die Konfigurationsvariable <varname>$::lx_office_conf{system}->{eur}</varname> ausgewertet wurde.
|
||
</para>
|
||
|
||
<para>
|
||
... | ... | |
gewachsen sind), sollte man vor einem Aufruf (!) von zum
|
||
Beispiel <function>IS->retrieve_customer()</function> in
|
||
Sicherheit bringen. </para>
|
||
Z.B. das vom Benutzer eingestellte Zahlenformat, bevor man Berechnung in einem
|
||
bestimmten Format durchführt (SL/Form.pm Zeile 3552, Stand version 2.7beta), um
|
||
dies hinterher wieder auf den richtigen Wert zu setzen:
|
||
<programlisting>
|
||
my $saved_numberformat = $::myconfig{numberformat};
|
||
$::myconfig{numberformat} = $numberformat;
|
||
# (...) div Berechnungen
|
||
$::myconfig{numberformat} = $saved_numberformat;
|
||
</programlisting>
|
||
<para>Das Objekt der Klasse Form hat leider im Moment noch viele
|
||
zentrale Funktionen die vom internen Zustand abhängen, deshalb
|
||
bitte nie einfach zerstören oder überschreiben (zumindestens nicht kurz
|
||
vor einem Release oder in Absprache über bspw. die devel-Liste ;-).
|
||
Es geht ziemlich sicher etwas kaputt.</para>
|
||
|
||
<para><varname>$::form</varname> ist gleichzeitig der Standard Scope
|
||
in den <productname>Template::Toolkit</productname> Templates
|
||
außerhalb der Controller: der Ausdruck <function>[% var
|
||
%]</function> greift auf <varname>$::form->{var}</varname> zu.
|
||
Unter Controllern ist der Standard Scope anders, da lautet der
|
||
Zugriff <function>[% FORM.var %]</function>. In Druckvorlagen sind
|
||
normale Variablen ebenfall im <varname>$::form</varname> Scope, d.h.
|
||
<function><%var%></function> zeigt auf
|
||
<varname>$::form->{var}</varname>.
|
||
Nochmal von der anderen Seite erläutert, innerhalb von (Web-)Templates sieht
|
||
man häufiger solche Konstrukte:
|
||
<programlisting>
|
||
[%- IF business %]
|
||
# (... Zeig die Auswahlliste Kunden-/Lieferantentyp an
|
||
[%- END %]
|
||
</programlisting>
|
||
Entweder wird hier dann $::form->{business} ausgewertet oder aber der Funktion
|
||
<function>$form->parse_html_template</function> wird explizit noch ein zusätzlicher Hash
|
||
übergeben, der dann auch in den (Web-)Templates zu Verfügung steht, bspw. so:
|
||
<function>$form->parse_html_template("is/form_header", \%TMPL_VAR);</function>
|
||
|
||
Innerhalb von Schleifen wird
|
||
<varname>$::form->{TEMPLATE_ARRAYS}{var}[$index]</varname>
|
||
bevorzugt, wenn vorhanden.</para>
|
||
Zum Beispiel in SL/DO.pm welche über alle Positionen eines Lieferscheins
|
||
in Schleife läuft:
|
||
<programlisting>
|
||
for $i (1 .. $form->{rowcount}) {
|
||
(...)
|
||
push @{ $form->{TEMPLATE_ARRAYS}{runningnumber} }, $position;
|
||
push @{ $form->{TEMPLATE_ARRAYS}{number} }, $form->{"partnumber_$i"};
|
||
push @{ $form->{TEMPLATE_ARRAYS}{description} }, $form->{"description_$i"};
|
||
</programlisting>
|
||
</sect3>
|
||
|
||
<para>
|
||
Z.B. das vom Benutzer eingestellte Zahlenformat, bevor man Berechnung in einem
|
||
bestimmten Format durchführt (SL/Form.pm Zeile 3552, Stand version 2.7beta), um
|
||
dies hinterher wieder auf den richtigen Wert zu setzen:
|
||
</para>
|
||
|
||
<programlisting> my $saved_numberformat = $::myconfig{numberformat};
|
||
$::myconfig{numberformat} = $numberformat;
|
||
# (...) div Berechnungen
|
||
$::myconfig{numberformat} = $saved_numberformat;</programlisting>
|
||
|
||
<para>
|
||
Das Objekt der Klasse Form hat leider im Moment noch viele zentrale Funktionen die vom internen Zustand abhängen, deshalb bitte
|
||
nie einfach zerstören oder überschreiben (zumindestens nicht kurz vor einem Release oder in Absprache über bspw. die devel-Liste
|
||
;-). Es geht ziemlich sicher etwas kaputt.
|
||
</para>
|
||
|
||
<para>
|
||
<varname>$::form</varname> ist gleichzeitig der Standard Scope in den <productname>Template::Toolkit</productname> Templates
|
||
außerhalb der Controller: der Ausdruck <function>[% var %]</function> greift auf <varname>$::form->{var}</varname> zu. Unter
|
||
Controllern ist der Standard Scope anders, da lautet der Zugriff <function>[% FORM.var %]</function>. In Druckvorlagen sind
|
||
normale Variablen ebenfall im <varname>$::form</varname> Scope, d.h. <function><%var%></function> zeigt auf
|
||
<varname>$::form->{var}</varname>. Nochmal von der anderen Seite erläutert, innerhalb von (Web-)Templates sieht man häufiger
|
||
solche Konstrukte:
|
||
</para>
|
||
|
||
<programlisting>[%- IF business %]
|
||
# (... Zeig die Auswahlliste Kunden-/Lieferantentyp an)
|
||
[%- END %]</programlisting>
|
||
|
||
<para>
|
||
Entweder wird hier dann $::form->{business} ausgewertet oder aber der Funktion <function>$form->parse_html_template</function>
|
||
wird explizit noch ein zusätzlicher Hash übergeben, der dann auch in den (Web-)Templates zu Verfügung steht, bspw. so:
|
||
</para>
|
||
|
||
<programlisting>$form->parse_html_template("is/form_header", \%TMPL_VAR);</programlisting>
|
||
|
||
<para>
|
||
Innerhalb von Schleifen wird <varname>$::form->{TEMPLATE_ARRAYS}{var}[$index]</varname> bevorzugt, wenn vorhanden. Ein
|
||
Beispiel findet sich in SL/DO.pm, welches über alle Positionen eines Lieferscheins in Schleife läuft:
|
||
</para>
|
||
|
||
<programlisting>for $i (1 .. $form->{rowcount}) {
|
||
# ...
|
||
push @{ $form->{TEMPLATE_ARRAYS}{runningnumber} }, $position;
|
||
push @{ $form->{TEMPLATE_ARRAYS}{number} }, $form->{"partnumber_$i"};
|
||
push @{ $form->{TEMPLATE_ARRAYS}{description} }, $form->{"description_$i"};
|
||
# ...
|
||
}</programlisting>
|
||
</sect3>
|
||
|
||
<sect3>
|
||
<title>%::myconfig</title>
|
||
... | ... | |
</listitem>
|
||
</itemizedlist>
|
||
|
||
<para><varname>%::myconfig</varname> ist im Moment der Ersatz für
|
||
ein Userobjekt. Die meisten Funktionen, die etwas anhand des
|
||
aktuellen Users entscheiden müssen, befragen
|
||
<varname>%::myconfig</varname>.
|
||
Innerhalb der Anwendungen sind dies überwiegend die Daten, die sich
|
||
unter Programm->Einstellungen befinden, bzw. die Informationen über den
|
||
Benutzer die über die Administrator-Schnittstelle (admin.pl) eingegeben wurden.
|
||
</para>
|
||
<para>
|
||
<varname>%::myconfig</varname> ist im Moment der Ersatz für ein Userobjekt. Die meisten Funktionen, die etwas anhand des
|
||
aktuellen Users entscheiden müssen, befragen <varname>%::myconfig</varname>. Innerhalb der Anwendungen sind dies überwiegend die
|
||
Daten, die sich unter <guimenu>Programm</guimenu> -> <guimenuitem>Einstellungen</guimenuitem> befinden, bzw. die Informationen
|
||
über den Benutzer die über die Administrator-Schnittstelle (admin.pl) eingegeben wurden.
|
||
</para>
|
||
</sect3>
|
||
|
||
<sect3>
|
||
... | ... | |
</listitem>
|
||
</itemizedlist>
|
||
|
||
<para><varname>$::lxdebug</varname> stellt Debuggingfunktionen
|
||
bereit, wie "<function>enter_sub</function>" und
|
||
"<function>leave_sub</function>", mit denen in den alten Modulen ein
|
||
brauchbares Tracing gebaut ist, "<function>log_time</function>", mit
|
||
der man die Wallclockzeit seit Requeststart loggen kann, sowie
|
||
"<function>message</function>" und "<function>dump</function>" mit
|
||
denen man flott Informationen ins Log (tmp/lx-office-debug.log) packen kann.</para>
|
||
Beispielsweise so:
|
||
<programlisting>
|
||
$main::lxdebug->message(0, 'Meine Konfig:' . Dumper (%::myconfig));
|
||
$main::lxdebug->message(0, 'Wer bin ich? Kunde oder Lieferant:' . $form->{vc});
|
||
|
||
</programlisting>
|
||
<para>
|
||
<varname>$::lxdebug</varname> stellt Debuggingfunktionen bereit, wie "<function>enter_sub</function>" und
|
||
"<function>leave_sub</function>", mit denen in den alten Modulen ein brauchbares Tracing gebaut ist,
|
||
"<function>log_time</function>", mit der man die Wallclockzeit seit Requeststart loggen kann, sowie
|
||
"<function>message</function>" und "<function>dump</function>" mit denen man flott Informationen ins Log
|
||
(tmp/lx-office-debug.log) packen kann.
|
||
</para>
|
||
|
||
<para>
|
||
Beispielsweise so:
|
||
</para>
|
||
|
||
<programlisting>$main::lxdebug->message(0, 'Meine Konfig:' . Dumper (%::myconfig));
|
||
$main::lxdebug->message(0, 'Wer bin ich? Kunde oder Lieferant:' . $form->{vc});</programlisting>
|
||
</sect3>
|
||
|
||
<sect3>
|
||
... | ... | |
speichert aber Daten die von der Instanz abhängig sind. Eine Instanz
|
||
ist hier eine Mandantendatenbank.
|
||
Beispielsweise überprüft
|
||
<programlisting>$::instance_conf->get_inventory_system eq 'perpetual'</programlisting>
|
||
<programlisting>$::instance_conf->get_inventory_system eq 'perpetual'</programlisting>
|
||
ob die berüchtigte Bestandsmethode zur Anwendung kommt.</para>
|
||
</sect3>
|
||
|
doc/html/ch04.html | ||
---|---|---|
hei?t, alles was einem lieb ist (alle Variablen die einem ans Herz
|
||
gewachsen sind), sollte man vor einem Aufruf (!) von zum
|
||
Beispiel <code class="function">IS->retrieve_customer()</code> in
|
||
Sicherheit bringen. </p>
|
||
Z.B. das vom Benutzer eingestellte Zahlenformat, bevor man Berechnung in einem
|
||
bestimmten Format durchf?hrt (SL/Form.pm Zeile 3552, Stand version 2.7beta), um
|
||
dies hinterher wieder auf den richtigen Wert zu setzen:
|
||
<pre class="programlisting">
|
||
my $saved_numberformat = $::myconfig{numberformat};
|
||
$::myconfig{numberformat} = $numberformat;
|
||
# (...) div Berechnungen
|
||
$::myconfig{numberformat} = $saved_numberformat;
|
||
</pre><p>Das Objekt der Klasse Form hat leider im Moment noch viele
|
||
zentrale Funktionen die vom internen Zustand abh?ngen, deshalb
|
||
bitte nie einfach zerst?ren oder ?berschreiben (zumindestens nicht kurz
|
||
vor einem Release oder in Absprache ?ber bspw. die devel-Liste ;-).
|
||
Es geht ziemlich sicher etwas kaputt.</p><p>
|
||
<code class="varname">$::form</code> ist gleichzeitig der Standard Scope
|
||
in den <span class="productname">Template::Toolkit</span>™ Templates
|
||
au?erhalb der Controller: der Ausdruck <code class="function">[% var
|
||
%]</code> greift auf <code class="varname">$::form->{var}</code> zu.
|
||
Unter Controllern ist der Standard Scope anders, da lautet der
|
||
Zugriff <code class="function">[% FORM.var %]</code>. In Druckvorlagen sind
|
||
normale Variablen ebenfall im <code class="varname">$::form</code> Scope, d.h.
|
||
<code class="function"><%var%></code> zeigt auf
|
||
<code class="varname">$::form->{var}</code>.
|
||
Nochmal von der anderen Seite erl?utert, innerhalb von (Web-)Templates sieht
|
||
man h?ufiger solche Konstrukte:
|
||
</p><pre class="programlisting">
|
||
[%- IF business %]
|
||
# (... Zeig die Auswahlliste Kunden-/Lieferantentyp an
|
||
[%- END %]
|
||
</pre><p>
|
||
Entweder wird hier dann $::form->{business} ausgewertet oder aber der Funktion
|
||
<code class="function">$form->parse_html_template</code> wird explizit noch ein zus?tzlicher Hash
|
||
?bergeben, der dann auch in den (Web-)Templates zu Verf?gung steht, bspw. so:
|
||
<code class="function">$form->parse_html_template("is/form_header", \%TMPL_VAR);</code>
|
||
|
||
Innerhalb von Schleifen wird
|
||
<code class="varname">$::form->{TEMPLATE_ARRAYS}{var}[$index]</code>
|
||
bevorzugt, wenn vorhanden.</p>
|
||
Zum Beispiel in SL/DO.pm welche ?ber alle Positionen eines Lieferscheins
|
||
in Schleife l?uft:
|
||
<pre class="programlisting">
|
||
for $i (1 .. $form->{rowcount}) {
|
||
(...)
|
||
push @{ $form->{TEMPLATE_ARRAYS}{runningnumber} }, $position;
|
||
push @{ $form->{TEMPLATE_ARRAYS}{number} }, $form->{"partnumber_$i"};
|
||
push @{ $form->{TEMPLATE_ARRAYS}{description} }, $form->{"description_$i"};
|
||
</pre></div><div class="sect3" title="4.1.3.2. %::myconfig"><div class="titlepage"><div><div><h4 class="title"><a name="d0e4529"></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
|
||
Sicherheit bringen. </p><p>
|
||
Z.B. das vom Benutzer eingestellte Zahlenformat, bevor man Berechnung in einem
|
||
bestimmten Format durchf?hrt (SL/Form.pm Zeile 3552, Stand version 2.7beta), um
|
||
dies hinterher wieder auf den richtigen Wert zu setzen:
|
||
</p><pre class="programlisting"> my $saved_numberformat = $::myconfig{numberformat};
|
||
$::myconfig{numberformat} = $numberformat;
|
||
# (...) div Berechnungen
|
||
$::myconfig{numberformat} = $saved_numberformat;</pre><p>
|
||
Das Objekt der Klasse Form hat leider im Moment noch viele zentrale Funktionen die vom internen Zustand abh?ngen, deshalb bitte
|
||
nie einfach zerst?ren oder ?berschreiben (zumindestens nicht kurz vor einem Release oder in Absprache ?ber bspw. die devel-Liste
|
||
;-). Es geht ziemlich sicher etwas kaputt.
|
||
</p><p>
|
||
|
||
<code class="varname">$::form</code> ist gleichzeitig der Standard Scope in den <span class="productname">Template::Toolkit</span>™ Templates
|
||
au?erhalb der Controller: der Ausdruck <code class="function">[% var %]</code> greift auf <code class="varname">$::form->{var}</code> zu. Unter
|
||
Controllern ist der Standard Scope anders, da lautet der Zugriff <code class="function">[% FORM.var %]</code>. In Druckvorlagen sind
|
||
normale Variablen ebenfall im <code class="varname">$::form</code> Scope, d.h. <code class="function"><%var%></code> zeigt auf
|
||
<code class="varname">$::form->{var}</code>. Nochmal von der anderen Seite erl?utert, innerhalb von (Web-)Templates sieht man h?ufiger
|
||
solche Konstrukte:
|
||
</p><pre class="programlisting">[%- IF business %]
|
||
# (... Zeig die Auswahlliste Kunden-/Lieferantentyp an)
|
||
[%- END %]</pre><p>
|
||
Entweder wird hier dann $::form->{business} ausgewertet oder aber der Funktion <code class="function">$form->parse_html_template</code>
|
||
wird explizit noch ein zus?tzlicher Hash ?bergeben, der dann auch in den (Web-)Templates zu Verf?gung steht, bspw. so:
|
||
</p><pre class="programlisting">$form->parse_html_template("is/form_header", \%TMPL_VAR);</pre><p>
|
||
Innerhalb von Schleifen wird <code class="varname">$::form->{TEMPLATE_ARRAYS}{var}[$index]</code> bevorzugt, wenn vorhanden. Ein
|
||
Beispiel findet sich in SL/DO.pm, welches ?ber alle Positionen eines Lieferscheins in Schleife l?uft:
|
||
</p><pre class="programlisting">for $i (1 .. $form->{rowcount}) {
|
||
# ...
|
||
push @{ $form->{TEMPLATE_ARRAYS}{runningnumber} }, $position;
|
||
push @{ $form->{TEMPLATE_ARRAYS}{number} }, $form->{"partnumber_$i"};
|
||
push @{ $form->{TEMPLATE_ARRAYS}{description} }, $form->{"description_$i"};
|
||
# ...
|
||
}</pre></div><div class="sect3" title="4.1.3.2. %::myconfig"><div class="titlepage"><div><div><h4 class="title"><a name="d0e4531"></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,
|
||
Datumsformat dateformat und Nummernformat numberformat</p></li><li class="listitem"><p>Enth?lt Datenbankzugriffinformationen</p></li></ul></div><p>
|
||
<code class="varname">%::myconfig</code> ist im Moment der Ersatz f?r
|
||
ein Userobjekt. Die meisten Funktionen, die etwas anhand des
|
||
aktuellen Users entscheiden m?ssen, befragen
|
||
<code class="varname">%::myconfig</code>.
|
||
Innerhalb der Anwendungen sind dies ?berwiegend die Daten, die sich
|
||
unter Programm->Einstellungen befinden, bzw. die Informationen ?ber den
|
||
Benutzer die ?ber die Administrator-Schnittstelle (admin.pl) eingegeben wurden.
|
||
</p></div><div class="sect3" title="4.1.3.3. $::locale"><div class="titlepage"><div><div><h4 class="title"><a name="d0e4562"></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
|
||
|
||
<code class="varname">%::myconfig</code> ist im Moment der Ersatz f?r ein Userobjekt. Die meisten Funktionen, die etwas anhand des
|
||
aktuellen Users entscheiden m?ssen, befragen <code class="varname">%::myconfig</code>. Innerhalb der Anwendungen sind dies ?berwiegend die
|
||
Daten, die sich unter <span class="guimenu">Programm</span> -> <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="d0e4570"></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="d0e4580"></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="d0e4588"></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">leave_sub</code>", mit denen in den alten Modulen ein
|
||
brauchbares Tracing gebaut ist, "<code class="function">log_time</code>", mit
|
||
der man die Wallclockzeit seit Requeststart loggen kann, sowie
|
||
"<code class="function">message</code>" und "<code class="function">dump</code>" mit
|
||
denen man flott Informationen ins Log (tmp/lx-office-debug.log) packen kann.</p>
|
||
Beispielsweise so:
|
||
<pre class="programlisting">
|
||
$main::lxdebug->message(0, 'Meine Konfig:' . Dumper (%::myconfig));
|
||
$main::lxdebug->message(0, 'Wer bin ich? Kunde oder Lieferant:' . $form->{vc});
|
||
|
||
</pre></div><div class="sect3" title="4.1.3.5. $::auth"><div class="titlepage"><div><div><h4 class="title"><a name="d0e4616"></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">$::lxdebug</code> stellt Debuggingfunktionen bereit, wie "<code class="function">enter_sub</code>" und
|
||
"<code class="function">leave_sub</code>", mit denen in den alten Modulen ein brauchbares Tracing gebaut ist,
|
||
"<code class="function">log_time</code>", mit der man die Wallclockzeit seit Requeststart loggen kann, sowie
|
||
"<code class="function">message</code>" und "<code class="function">dump</code>" mit denen man flott Informationen ins Log
|
||
(tmp/lx-office-debug.log) packen kann.
|
||
</p><p>
|
||
Beispielsweise so:
|
||
</p><pre class="programlisting">$main::lxdebug->message(0, 'Meine Konfig:' . Dumper (%::myconfig));
|
||
$main::lxdebug->message(0, 'Wer bin ich? Kunde oder Lieferant:' . $form->{vc});</pre></div><div class="sect3" title="4.1.3.5. $::auth"><div class="titlepage"><div><div><h4 class="title"><a name="d0e4625"></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="d0e4637"></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="d0e4646"></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/lx_office.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 das
|
||
... | ... | |
file = /tmp/lx-office-debug.log</pre><p>ist der Key <code class="varname">file</code> im Programm als
|
||
<code class="varname">$::lx_office_conf->{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="d0e4673"></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="d0e4682"></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->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="d0e4694"></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="d0e4703"></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="d0e4712"></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="d0e4721"></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
|
||
... | ... | |
Differentialkriterien sind:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Kommt es vom User, und soll unver?ndert wieder an den User? Dann <code class="varname">$::form</code>, steht da eh schon</p></li><li class="listitem"><p>Sind es Daten aus der Datenbank, die nur bis zum Ende des Requests gebraucht werden? Dann
|
||
<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="d0e4754"></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="d0e4759"></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="d0e4763"></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="d0e4768"></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->{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="d0e4775"></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="d0e4784"></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->{cache}{all_units}</code>
|
||
</p></li><li class="listitem"><p>Wird nur in
|
||
<code class="function">AM->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="d0e4794"></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="d0e4803"></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> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="ch04s02.html">Weiter</a></td></tr><tr><td width="40%" align="left" valign="top">3.3. Excel-Vorlagen </td><td width="20%" align="center"><a accesskey="h" href="index.html">Zum Anfang</a></td><td width="40%" align="right" valign="top"> 4.2. Entwicklung unter FastCGI</td></tr></table></div></body></html>
|
doc/html/index.html | ||
---|---|---|
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
|
||
<title>Lx-Office: 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="Lx-Office: 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">Lx-Office: Installation, Konfiguration, Entwicklung</th></tr><tr><td width="20%" align="left"> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="ch01.html">Weiter</a></td></tr></table><hr></div><div lang="de" class="book" title="Lx-Office: Installation, Konfiguration, Entwicklung"><div class="titlepage"><div><div><h1 class="title"><a name="ding.xml"></a>Lx-Office: 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. Lx-Office-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#d0e508">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></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. Drucken mit Lx-Office</a></span></dt><dt><span class="sect1"><a href="ch02s10.html">2.10. OpenDocument-Vorlagen</a></span></dt><dt><span class="sect1"><a href="ch02s11.html">2.11. Konfiguration zur Einnahmen?berschussrechnung/Bilanzierung: EUR</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch02s11.html#config.eur.introduction">2.11.1. Einf?hrung</a></span></dt><dt><span class="sect2"><a href="ch02s11.html#config.eur.parameters">2.11.2. Konfigurationsparameter</a></span></dt><dt><span class="sect2"><a href="ch02s11.html#config.eur.setting-parameters">2.11.3. Festlegen der Parameter</a></span></dt><dt><span class="sect2"><a href="ch02s11.html#config.eur.inventory-system-perpetual">2.11.4. Bemerkungen zu Bestandsmethode</a></span></dt><dt><span class="sect2"><a href="ch02s11.html#config.eur.knonw-issues">2.11.5. Bekannte Probleme</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch02s12.html">2.12. Lx-Office 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#d0e4249">4.1.1. Wie sehen globale Variablen in Perl aus?</a></span></dt><dt><span class="sect2"><a href="ch04.html#d0e4350">4.1.2. Warum sind globale Variablen ein Problem?</a></span></dt><dt><span class="sect2"><a href="ch04.html#d0e4383">4.1.3. Kanonische globale Variablen</a></span></dt><dt><span class="sect2"><a href="ch04.html#d0e4754">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. Stil-Richtlinien</a></span></dt><dt><span class="sect1"><a href="ch04s06.html">4.6. Dokumentation erstellen</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch04s06.html#devel.build-doc.introduction">4.6.1. Einf?hrung</a></span></dt><dt><span class="sect2"><a href="ch04s06.html#devel.build-doc.required-software">4.6.2. Ben?tigte Software</a></span></dt><dt><span class="sect2"><a href="ch04s06.html#devel.build-doc.build">4.6.3. PDFs und HTML-Seiten erstellen</a></span></dt><dt><span class="sect2"><a href="ch04s06.html#devel.build-doc.repository">4.6.4. Einchecken in das Git-Repository</a></span></dt></dl></dd></dl></dd></dl></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="ch01.html">Weiter</a></td></tr><tr><td width="40%" align="left" valign="top"> </td><td width="20%" align="center"> </td><td width="40%" align="right" valign="top"> Kapitel 1. Aktuelle Hinweise</td></tr></table></div></body></html>
|
||
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#d0e4249">4.1.1. Wie sehen globale Variablen in Perl aus?</a></span></dt><dt><span class="sect2"><a href="ch04.html#d0e4350">4.1.2. Warum sind globale Variablen ein Problem?</a></span></dt><dt><span class="sect2"><a href="ch04.html#d0e4383">4.1.3. Kanonische globale Variablen</a></span></dt><dt><span class="sect2"><a href="ch04.html#d0e4763">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. Stil-Richtlinien</a></span></dt><dt><span class="sect1"><a href="ch04s06.html">4.6. Dokumentation erstellen</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch04s06.html#devel.build-doc.introduction">4.6.1. Einf?hrung</a></span></dt><dt><span class="sect2"><a href="ch04s06.html#devel.build-doc.required-software">4.6.2. Ben?tigte Software</a></span></dt><dt><span class="sect2"><a href="ch04s06.html#devel.build-doc.build">4.6.3. PDFs und HTML-Seiten erstellen</a></span></dt><dt><span class="sect2"><a href="ch04s06.html#devel.build-doc.repository">4.6.4. Einchecken in das Git-Repository</a></span></dt></dl></dd></dl></dd></dl></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="ch01.html">Weiter</a></td></tr><tr><td width="40%" align="left" valign="top"> </td><td width="20%" align="center"> </td><td width="40%" align="right" valign="top"> Kapitel 1. Aktuelle Hinweise</td></tr></table></div></body></html>
|
Auch abrufbar als: Unified diff
Diverse XML-Bugs in der Doku gefixt