Projekt

Allgemein

Profil

« Zurück | Weiter » 

Revision dda4cde1

Von Moritz Bunkus vor fast 13 Jahren hinzugefügt

Diverse XML-Bugs in der Doku gefixt

Unterschiede anzeigen:

doc/dokumentation.xml
25 25
        url="http://www.lx-office.org/forum/">http://www.lx-office.org/forum/</ulink></para>
26 26
      </listitem>
27 27
    </itemizedlist>
28

  
29
    <!--  -->
30 28
  </chapter>
31 29

  
32 30
  <chapter id="config">
......
462 460

  
463 461
        <programlisting>local all lxoffice password
464 462
host all lxoffice 127.0.0.1 255.255.255.255 password</programlisting>
465

  
466
        <!--  -->
467 463
      </sect2>
468 464

  
469 465
      <sect2 id="Erweiterung-für-servergespeicherte-Prozeduren">
......
475 471
        führen Sie die folgenden Kommandos aus:</para>
476 472

  
477 473
        <programlisting>create language 'plpgsql';</programlisting>
478
        <!--  -->
479 474
      </sect2>
480 475

  
481 476
      <sect2 id="Datenbankbenutzer-anlegen">
......
491 486
        <para>Wenn Sie später einen Datenbankzugriff konfigurieren, verändern
492 487
        Sie den evtl. voreingestellten Benutzer “postgres” auf “lxoffice” bzw.
493 488
        den hier gewählten Benutzernamen.</para>
494

  
495
        <!--  -->
496 489
      </sect2>
497 490
    </sect1>
498 491

  
......
850 843

  
851 844
        <para>Dieselben Optionen können auch für die SystemV-basierenden
852 845
        Runlevel-Scripte benutzt werden (siehe oben).</para>
853

  
854
        <!--  -->
855 846
      </sect2>
856 847
    </sect1>
857 848

  
......
861 852
      <para>Informationen über die Einrichtung der Benutzerauthentifizierung,
862 853
      über die Verwaltung von Gruppen und weitere Einstellungen</para>
863 854

  
864
      <!--  -->
865

  
866 855
      <sect2 id="Grundlagen-zur-Benutzerauthentifizierung">
867 856
        <title>Grundlagen zur Benutzerauthentifizierung</title>
868 857

  
......
1043 1032

  
1044 1033
        <para><ulink
1045 1034
        url="http://localhost/lx-erp/admin.pl">http://localhost/lx-erp/admin.pl</ulink></para>
1046

  
1047
        <!--  -->
1048 1035
      </sect2>
1049 1036
    </sect1>
1050 1037

  
......
1213 1200
        Mitglied in dieser Gruppe. Damit wird das Verhalten von Lx-Office bis
1214 1201
        Version 2.4.3 inklusive wiederhergestellt, und die Benutzer können
1215 1202
        sich sofort wieder anmelden und mit dem System arbeiten.</para>
1216

  
1217
        <!--  -->
1218 1203
      </sect2>
1219 1204
    </sect1>
1220 1205

  
......
1264 1249
      <literal>pdflatex</literal>), und stellen Sie sicher, dass pdflatex
1265 1250
      (oder das von Ihnen verwendete System) vom Webserver ausgeführt werden
1266 1251
      darf.</para>
1267

  
1268
      <!--  -->
1269 1252
    </sect1>
1270 1253

  
1271 1254
    <sect1 id="OpenDocument-Vorlagen">
......
1340 1323
      sein. Dieses wurde bereits erledigt (siehe <xref
1341 1324
      linkend="Manuelle-Installation-des-Programmpaketes"/>), kann aber erneut
1342 1325
      überprüft werden, wenn die Konvertierung nach PDF fehlschlägt.</para>
1343

  
1344
      <!--  -->
1345 1326
    </sect1>
1346 1327

  
1347 1328
    <sect1 id="config.eur">
......
1456 1437
       <para>
1457 1438
        Bei bestimmten Berichten kann man derzeit noch inviduell einstellen, ob man nach Ist- oder Sollversteuerung auswertet, und es werden
1458 1439
        im Code Variablen wie $accrual oder $cash gesetzt. Diese Codestellen wurden noch nicht angepasst, sondern nur die, wo bisher
1459
        die Konfigurationsvariable <varname>$::lx_office_conf{system}->{eur}</varname> ausgewertet wurde.
1440
        die Konfigurationsvariable <varname>$::lx_office_conf{system}-&gt;{eur}</varname> ausgewertet wurde.
1460 1441
       </para>
1461 1442

  
1462 1443
       <para>
......
4317 4298
          gewachsen sind), sollte man vor einem Aufruf (!) von zum
4318 4299
          Beispiel <function>IS-&gt;retrieve_customer()</function> in
4319 4300
          Sicherheit bringen. </para>
4320
          Z.B. das vom Benutzer eingestellte Zahlenformat, bevor man Berechnung in einem
4321
          bestimmten Format durchführt (SL/Form.pm Zeile 3552, Stand version 2.7beta), um
4322
          dies hinterher wieder auf den richtigen Wert zu setzen:
4323
          <programlisting>
4324
            my $saved_numberformat    = $::myconfig{numberformat};
4325
            $::myconfig{numberformat} = $numberformat;
4326
            # (...) div Berechnungen
4327
            $::myconfig{numberformat} = $saved_numberformat;
4328
          </programlisting>
4329
          <para>Das Objekt der Klasse Form hat leider im Moment noch viele
4330
          zentrale Funktionen die vom internen Zustand abhängen, deshalb
4331
          bitte nie einfach zerstören oder überschreiben (zumindestens nicht kurz
4332
          vor einem Release oder in Absprache über bspw. die devel-Liste ;-).
4333
          Es geht ziemlich sicher etwas kaputt.</para>
4334

  
4335
          <para><varname>$::form</varname> ist gleichzeitig der Standard Scope
4336
          in den <productname>Template::Toolkit</productname> Templates
4337
          außerhalb der Controller: der Ausdruck <function>[% var
4338
          %]</function> greift auf <varname>$::form-&gt;{var}</varname> zu.
4339
          Unter Controllern ist der Standard Scope anders, da lautet der
4340
          Zugriff <function>[% FORM.var %]</function>. In Druckvorlagen sind
4341
          normale Variablen ebenfall im <varname>$::form</varname> Scope, d.h.
4342
          <function>&lt;%var%&gt;</function> zeigt auf
4343
          <varname>$::form-&gt;{var}</varname>.
4344
          Nochmal von der anderen Seite erläutert, innerhalb von (Web-)Templates sieht
4345
          man häufiger solche Konstrukte:
4346
          <programlisting>
4347
            [%- IF business %]
4348
            # (... Zeig die Auswahlliste Kunden-/Lieferantentyp an
4349
            [%- END %]
4350
         </programlisting>
4351
        Entweder wird hier dann $::form->{business} ausgewertet oder aber der Funktion
4352
        <function>$form->parse_html_template</function> wird explizit noch ein zusätzlicher Hash
4353
        übergeben, der dann auch in den (Web-)Templates zu Verfügung steht, bspw. so:
4354
          <function>$form->parse_html_template("is/form_header", \%TMPL_VAR);</function>
4355

  
4356
          Innerhalb von Schleifen wird
4357
          <varname>$::form-&gt;{TEMPLATE_ARRAYS}{var}[$index]</varname>
4358
          bevorzugt, wenn vorhanden.</para>
4359
          Zum Beispiel in SL/DO.pm welche über alle Positionen eines Lieferscheins
4360
          in Schleife läuft:
4361
          <programlisting>
4362
            for $i (1 .. $form->{rowcount}) {
4363
              (...)
4364
              push @{ $form->{TEMPLATE_ARRAYS}{runningnumber} },   $position;
4365
              push @{ $form->{TEMPLATE_ARRAYS}{number} },          $form->{"partnumber_$i"};
4366
              push @{ $form->{TEMPLATE_ARRAYS}{description} },     $form->{"description_$i"};
4367
         </programlisting>
4368
                 </sect3>
4301

  
4302
          <para>
4303
           Z.B. das vom Benutzer eingestellte Zahlenformat, bevor man Berechnung in einem
4304
           bestimmten Format durchführt (SL/Form.pm Zeile 3552, Stand version 2.7beta), um
4305
           dies hinterher wieder auf den richtigen Wert zu setzen:
4306
          </para>
4307

  
4308
          <programlisting>  my $saved_numberformat    = $::myconfig{numberformat};
4309
  $::myconfig{numberformat} = $numberformat;
4310
  # (...) div Berechnungen
4311
  $::myconfig{numberformat} = $saved_numberformat;</programlisting>
4312

  
4313
          <para>
4314
           Das Objekt der Klasse Form hat leider im Moment noch viele zentrale Funktionen die vom internen Zustand abhängen, deshalb bitte
4315
           nie einfach zerstören oder überschreiben (zumindestens nicht kurz vor einem Release oder in Absprache über bspw. die devel-Liste
4316
           ;-).  Es geht ziemlich sicher etwas kaputt.
4317
          </para>
4318

  
4319
          <para>
4320
           <varname>$::form</varname> ist gleichzeitig der Standard Scope in den <productname>Template::Toolkit</productname> Templates
4321
           außerhalb der Controller: der Ausdruck <function>[% var %]</function> greift auf <varname>$::form-&gt;{var}</varname> zu.  Unter
4322
           Controllern ist der Standard Scope anders, da lautet der Zugriff <function>[% FORM.var %]</function>. In Druckvorlagen sind
4323
           normale Variablen ebenfall im <varname>$::form</varname> Scope, d.h.  <function>&lt;%var%&gt;</function> zeigt auf
4324
           <varname>$::form-&gt;{var}</varname>.  Nochmal von der anderen Seite erläutert, innerhalb von (Web-)Templates sieht man häufiger
4325
           solche Konstrukte:
4326
          </para>
4327

  
4328
          <programlisting>[%- IF business %]
4329
# (... Zeig die Auswahlliste Kunden-/Lieferantentyp an)
4330
[%- END %]</programlisting>
4331

  
4332
          <para>
4333
           Entweder wird hier dann $::form-&gt;{business} ausgewertet oder aber der Funktion <function>$form-&gt;parse_html_template</function>
4334
           wird explizit noch ein zusätzlicher Hash übergeben, der dann auch in den (Web-)Templates zu Verfügung steht, bspw. so:
4335
          </para>
4336

  
4337
          <programlisting>$form-&gt;parse_html_template("is/form_header", \%TMPL_VAR);</programlisting>
4338

  
4339
          <para>
4340
           Innerhalb von Schleifen wird <varname>$::form-&gt;{TEMPLATE_ARRAYS}{var}[$index]</varname> bevorzugt, wenn vorhanden. Ein
4341
           Beispiel findet sich in SL/DO.pm, welches über alle Positionen eines Lieferscheins in Schleife läuft:
4342
          </para>
4343

  
4344
          <programlisting>for $i (1 .. $form-&gt;{rowcount}) {
4345
  # ...
4346
  push @{ $form-&gt;{TEMPLATE_ARRAYS}{runningnumber} },   $position;
4347
  push @{ $form-&gt;{TEMPLATE_ARRAYS}{number} },          $form-&gt;{"partnumber_$i"};
4348
  push @{ $form-&gt;{TEMPLATE_ARRAYS}{description} },     $form-&gt;{"description_$i"};
4349
  # ...
4350
}</programlisting>
4351
        </sect3>
4369 4352

  
4370 4353
        <sect3>
4371 4354
          <title>%::myconfig</title>
......
4404 4387
            </listitem>
4405 4388
          </itemizedlist>
4406 4389

  
4407
          <para><varname>%::myconfig</varname> ist im Moment der Ersatz für
4408
          ein Userobjekt. Die meisten Funktionen, die etwas anhand des
4409
          aktuellen Users entscheiden müssen, befragen
4410
          <varname>%::myconfig</varname>.
4411
          Innerhalb der Anwendungen sind dies überwiegend die Daten, die sich
4412
          unter Programm->Einstellungen befinden, bzw. die Informationen über den
4413
          Benutzer die über die Administrator-Schnittstelle (admin.pl) eingegeben wurden.
4414
        </para>
4390
          <para>
4391
           <varname>%::myconfig</varname> ist im Moment der Ersatz für ein Userobjekt. Die meisten Funktionen, die etwas anhand des
4392
           aktuellen Users entscheiden müssen, befragen <varname>%::myconfig</varname>.  Innerhalb der Anwendungen sind dies überwiegend die
4393
           Daten, die sich unter <guimenu>Programm</guimenu> -&gt; <guimenuitem>Einstellungen</guimenuitem> befinden, bzw. die Informationen
4394
           über den Benutzer die über die Administrator-Schnittstelle (admin.pl) eingegeben wurden.
4395
          </para>
4415 4396
        </sect3>
4416 4397

  
4417 4398
        <sect3>
......
4459 4440
            </listitem>
4460 4441
          </itemizedlist>
4461 4442

  
4462
          <para><varname>$::lxdebug</varname> stellt Debuggingfunktionen
4463
          bereit, wie "<function>enter_sub</function>" und
4464
          "<function>leave_sub</function>", mit denen in den alten Modulen ein
4465
          brauchbares Tracing gebaut ist, "<function>log_time</function>", mit
4466
          der man die Wallclockzeit seit Requeststart loggen kann, sowie
4467
          "<function>message</function>" und "<function>dump</function>" mit
4468
          denen man flott Informationen ins Log (tmp/lx-office-debug.log) packen kann.</para>
4469
          Beispielsweise so:
4470
          <programlisting>
4471
            $main::lxdebug->message(0, 'Meine Konfig:' . Dumper (%::myconfig));
4472
            $main::lxdebug->message(0, 'Wer bin ich? Kunde oder Lieferant:' . $form->{vc});
4473

  
4474
          </programlisting>
4443
          <para>
4444
           <varname>$::lxdebug</varname> stellt Debuggingfunktionen bereit, wie "<function>enter_sub</function>" und
4445
           "<function>leave_sub</function>", mit denen in den alten Modulen ein brauchbares Tracing gebaut ist,
4446
           "<function>log_time</function>", mit der man die Wallclockzeit seit Requeststart loggen kann, sowie
4447
           "<function>message</function>" und "<function>dump</function>" mit denen man flott Informationen ins Log
4448
           (tmp/lx-office-debug.log) packen kann.
4449
          </para>
4450

  
4451
          <para>
4452
           Beispielsweise so:
4453
          </para>
4454

  
4455
          <programlisting>$main::lxdebug-&gt;message(0, 'Meine Konfig:' . Dumper (%::myconfig));
4456
$main::lxdebug-&gt;message(0, 'Wer bin ich? Kunde oder Lieferant:' . $form-&gt;{vc});</programlisting>
4475 4457
        </sect3>
4476 4458

  
4477 4459
        <sect3>
......
4559 4541
          speichert aber Daten die von der Instanz abhängig sind. Eine Instanz
4560 4542
          ist hier eine Mandantendatenbank.
4561 4543
          Beispielsweise überprüft
4562
          <programlisting>$::instance_conf->get_inventory_system eq 'perpetual'</programlisting>
4544
          <programlisting>$::instance_conf-&gt;get_inventory_system eq 'perpetual'</programlisting>
4563 4545
          ob die berüchtigte Bestandsmethode zur Anwendung kommt.</para>
4564 4546
        </sect3>
4565 4547

  
doc/html/ch04.html
70 70
          hei?t, alles was einem lieb ist (alle Variablen die einem ans Herz
71 71
          gewachsen sind), sollte man vor einem Aufruf (!) von zum
72 72
          Beispiel <code class="function">IS-&gt;retrieve_customer()</code> in
73
          Sicherheit bringen. </p>
74
          Z.B. das vom Benutzer eingestellte Zahlenformat, bevor man Berechnung in einem
75
          bestimmten Format durchf?hrt (SL/Form.pm Zeile 3552, Stand version 2.7beta), um
76
          dies hinterher wieder auf den richtigen Wert zu setzen:
77
          <pre class="programlisting">
78
            my $saved_numberformat    = $::myconfig{numberformat};
79
            $::myconfig{numberformat} = $numberformat;
80
            # (...) div Berechnungen
81
            $::myconfig{numberformat} = $saved_numberformat;
82
          </pre><p>Das Objekt der Klasse Form hat leider im Moment noch viele
83
          zentrale Funktionen die vom internen Zustand abh?ngen, deshalb
84
          bitte nie einfach zerst?ren oder ?berschreiben (zumindestens nicht kurz
85
          vor einem Release oder in Absprache ?ber bspw. die devel-Liste ;-).
86
          Es geht ziemlich sicher etwas kaputt.</p><p>
87
                  <code class="varname">$::form</code> ist gleichzeitig der Standard Scope
88
          in den <span class="productname">Template::Toolkit</span>&#8482; Templates
89
          au?erhalb der Controller: der Ausdruck <code class="function">[% var
90
          %]</code> greift auf <code class="varname">$::form-&gt;{var}</code> zu.
91
          Unter Controllern ist der Standard Scope anders, da lautet der
92
          Zugriff <code class="function">[% FORM.var %]</code>. In Druckvorlagen sind
93
          normale Variablen ebenfall im <code class="varname">$::form</code> Scope, d.h.
94
          <code class="function">&lt;%var%&gt;</code> zeigt auf
95
          <code class="varname">$::form-&gt;{var}</code>.
96
          Nochmal von der anderen Seite erl?utert, innerhalb von (Web-)Templates sieht
97
          man h?ufiger solche Konstrukte:
98
          </p><pre class="programlisting">
99
            [%- IF business %]
100
            # (... Zeig die Auswahlliste Kunden-/Lieferantentyp an
101
            [%- END %]
102
         </pre><p>
103
        Entweder wird hier dann $::form-&gt;{business} ausgewertet oder aber der Funktion
104
        <code class="function">$form-&gt;parse_html_template</code> wird explizit noch ein zus?tzlicher Hash
105
        ?bergeben, der dann auch in den (Web-)Templates zu Verf?gung steht, bspw. so:
106
          <code class="function">$form-&gt;parse_html_template("is/form_header", \%TMPL_VAR);</code>
107

  
108
          Innerhalb von Schleifen wird
109
          <code class="varname">$::form-&gt;{TEMPLATE_ARRAYS}{var}[$index]</code>
110
          bevorzugt, wenn vorhanden.</p>
111
          Zum Beispiel in SL/DO.pm welche ?ber alle Positionen eines Lieferscheins
112
          in Schleife l?uft:
113
          <pre class="programlisting">
114
            for $i (1 .. $form-&gt;{rowcount}) {
115
              (...)
116
              push @{ $form-&gt;{TEMPLATE_ARRAYS}{runningnumber} },   $position;
117
              push @{ $form-&gt;{TEMPLATE_ARRAYS}{number} },          $form-&gt;{"partnumber_$i"};
118
              push @{ $form-&gt;{TEMPLATE_ARRAYS}{description} },     $form-&gt;{"description_$i"};
119
         </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
73
          Sicherheit bringen. </p><p>
74
           Z.B. das vom Benutzer eingestellte Zahlenformat, bevor man Berechnung in einem
75
           bestimmten Format durchf?hrt (SL/Form.pm Zeile 3552, Stand version 2.7beta), um
76
           dies hinterher wieder auf den richtigen Wert zu setzen:
77
          </p><pre class="programlisting">  my $saved_numberformat    = $::myconfig{numberformat};
78
  $::myconfig{numberformat} = $numberformat;
79
  # (...) div Berechnungen
80
  $::myconfig{numberformat} = $saved_numberformat;</pre><p>
81
           Das Objekt der Klasse Form hat leider im Moment noch viele zentrale Funktionen die vom internen Zustand abh?ngen, deshalb bitte
82
           nie einfach zerst?ren oder ?berschreiben (zumindestens nicht kurz vor einem Release oder in Absprache ?ber bspw. die devel-Liste
83
           ;-).  Es geht ziemlich sicher etwas kaputt.
84
          </p><p>
85
           
86
                  <code class="varname">$::form</code> ist gleichzeitig der Standard Scope in den <span class="productname">Template::Toolkit</span>&#8482; Templates
87
           au?erhalb der Controller: der Ausdruck <code class="function">[% var %]</code> greift auf <code class="varname">$::form-&gt;{var}</code> zu.  Unter
88
           Controllern ist der Standard Scope anders, da lautet der Zugriff <code class="function">[% FORM.var %]</code>. In Druckvorlagen sind
89
           normale Variablen ebenfall im <code class="varname">$::form</code> Scope, d.h.  <code class="function">&lt;%var%&gt;</code> zeigt auf
90
           <code class="varname">$::form-&gt;{var}</code>.  Nochmal von der anderen Seite erl?utert, innerhalb von (Web-)Templates sieht man h?ufiger
91
           solche Konstrukte:
92
          </p><pre class="programlisting">[%- IF business %]
93
# (... Zeig die Auswahlliste Kunden-/Lieferantentyp an)
94
[%- END %]</pre><p>
95
           Entweder wird hier dann $::form-&gt;{business} ausgewertet oder aber der Funktion <code class="function">$form-&gt;parse_html_template</code>
96
           wird explizit noch ein zus?tzlicher Hash ?bergeben, der dann auch in den (Web-)Templates zu Verf?gung steht, bspw. so:
97
          </p><pre class="programlisting">$form-&gt;parse_html_template("is/form_header", \%TMPL_VAR);</pre><p>
98
           Innerhalb von Schleifen wird <code class="varname">$::form-&gt;{TEMPLATE_ARRAYS}{var}[$index]</code> bevorzugt, wenn vorhanden. Ein
99
           Beispiel findet sich in SL/DO.pm, welches ?ber alle Positionen eines Lieferscheins in Schleife l?uft:
100
          </p><pre class="programlisting">for $i (1 .. $form-&gt;{rowcount}) {
101
  # ...
102
  push @{ $form-&gt;{TEMPLATE_ARRAYS}{runningnumber} },   $position;
103
  push @{ $form-&gt;{TEMPLATE_ARRAYS}{number} },          $form-&gt;{"partnumber_$i"};
104
  push @{ $form-&gt;{TEMPLATE_ARRAYS}{description} },     $form-&gt;{"description_$i"};
105
  # ...
106
}</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
120 107
              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
121 108
              extern serialisiert werden, weil da auch der Datenbankzugriff
122 109
              f?r diesen user drinsteht.</p></li><li class="listitem"><p>Enth?lt unter anderem Listenbegrenzung vclimit,
123 110
              Datumsformat dateformat und Nummernformat numberformat</p></li><li class="listitem"><p>Enth?lt Datenbankzugriffinformationen</p></li></ul></div><p>
124
                  <code class="varname">%::myconfig</code> ist im Moment der Ersatz f?r
125
          ein Userobjekt. Die meisten Funktionen, die etwas anhand des
126
          aktuellen Users entscheiden m?ssen, befragen
127
          <code class="varname">%::myconfig</code>.
128
          Innerhalb der Anwendungen sind dies ?berwiegend die Daten, die sich
129
          unter Programm-&gt;Einstellungen befinden, bzw. die Informationen ?ber den
130
          Benutzer die ?ber die Administrator-Schnittstelle (admin.pl) eingegeben wurden.
131
        </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
111
           
112
                  <code class="varname">%::myconfig</code> ist im Moment der Ersatz f?r ein Userobjekt. Die meisten Funktionen, die etwas anhand des
113
           aktuellen Users entscheiden m?ssen, befragen <code class="varname">%::myconfig</code>.  Innerhalb der Anwendungen sind dies ?berwiegend die
114
           Daten, die sich unter <span class="guimenu">Programm</span> -&gt; <span class="guimenuitem">Einstellungen</span> befinden, bzw. die Informationen
115
           ?ber den Benutzer die ?ber die Administrator-Schnittstelle (admin.pl) eingegeben wurden.
116
          </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
132 117
              sein.</p></li><li class="listitem"><p>Cached intern ?ber Requestgrenzen hinweg benutzte
133 118
              Locales</p></li></ul></div><p>Lokalisierung f?r den aktuellen User. Alle ?bersetzungen,
134
          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
119
          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
135 120
              Funktionen</p></li></ul></div><p>
136
                  <code class="varname">$::lxdebug</code> stellt Debuggingfunktionen
137
          bereit, wie "<code class="function">enter_sub</code>" und
138
          "<code class="function">leave_sub</code>", mit denen in den alten Modulen ein
139
          brauchbares Tracing gebaut ist, "<code class="function">log_time</code>", mit
140
          der man die Wallclockzeit seit Requeststart loggen kann, sowie
141
          "<code class="function">message</code>" und "<code class="function">dump</code>" mit
142
          denen man flott Informationen ins Log (tmp/lx-office-debug.log) packen kann.</p>
143
          Beispielsweise so:
144
          <pre class="programlisting">
145
            $main::lxdebug-&gt;message(0, 'Meine Konfig:' . Dumper (%::myconfig));
146
            $main::lxdebug-&gt;message(0, 'Wer bin ich? Kunde oder Lieferant:' . $form-&gt;{vc});
147

  
148
          </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>
121
           
122
                  <code class="varname">$::lxdebug</code> stellt Debuggingfunktionen bereit, wie "<code class="function">enter_sub</code>" und
123
           "<code class="function">leave_sub</code>", mit denen in den alten Modulen ein brauchbares Tracing gebaut ist,
124
           "<code class="function">log_time</code>", mit der man die Wallclockzeit seit Requeststart loggen kann, sowie
125
           "<code class="function">message</code>" und "<code class="function">dump</code>" mit denen man flott Informationen ins Log
126
           (tmp/lx-office-debug.log) packen kann.
127
          </p><p>
128
           Beispielsweise so:
129
          </p><pre class="programlisting">$main::lxdebug-&gt;message(0, 'Meine Konfig:' . Dumper (%::myconfig));
130
$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="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>
149 131
                  <code class="varname">$::auth</code> stellt Funktionen bereit um die
150 132
          Rechte des aktuellen Users abzufragen. Obwohl diese Informationen
151 133
          vom aktuellen User abh?ngen wird das Objekt aus
152 134
          Geschwindigkeitsgr?nden nur einmal angelegt und dann nach jedem
153
          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
135
          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
154 136
              "<code class="classname">SL::LxOfficeConf</code>"</p></li><li class="listitem"><p>Global gecached</p></li><li class="listitem"><p>Repr?sentation der
155 137
              <code class="filename">config/lx_office.conf[.default]</code>-Dateien</p></li></ul></div><p>Globale Konfiguration. Configdateien werden zum Start gelesen
156 138
          und danach nicht mehr angefasst. Es ist derzeit nicht geplant, dass das
......
159 141
file = /tmp/lx-office-debug.log</pre><p>ist der Key <code class="varname">file</code> im Programm als
160 142
          <code class="varname">$::lx_office_conf-&gt;{debug}{file}</code>
161 143
          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
162
            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
144
            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
163 145
              "<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>,
164 146
          speichert aber Daten die von der Instanz abh?ngig sind. Eine Instanz
165 147
          ist hier eine Mandantendatenbank.
166 148
          Beispielsweise ?berpr?ft
167 149
          </p><pre class="programlisting">$::instance_conf-&gt;get_inventory_system eq 'perpetual'</pre><p>
168
          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
150
          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
169 151
              "<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
170 152
              Server</p></li></ul></div><p>Der dritte Punkt ist auch der einzige Grund warum das Objekt
171 153
          global gespeichert wird. Wird vermutlich irgendwann in einem anderen
172
          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>
154
          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>
173 155
                  <code class="varname">$::request</code> ist ein generischer Platz um
174 156
          Daten "f?r den aktuellen Request" abzulegen. Sollte nicht f?r action
175 157
          at a distance benutzt werden, sondern um lokales memoizing zu
......
179 161
          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
180 162
              <code class="varname">$::request</code>
181 163
                     </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
182
              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
183
        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
164
              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
165
        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
184 166
              Klassenfunktionen funktionieren</p></li><li class="listitem"><p>Aufruf als Klasse erzeugt Dummyobjekt was im
185 167
              Klassennamespace gehalten wird und ?ber Requestgrenzen
186 168
              leaked</p></li><li class="listitem"><p>liegt jetzt unter
187 169
              <code class="varname">$::request-&gt;{cgi}</code>
188
                     </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
170
                     </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
189 171
              ein paar hundert mal pro Request eine Liste der Einheiten
190 172
              brauchen, und de als Parameter durch einen Riesenstack von
191 173
              Funktionen geschleift werden m?ssten.</p></li><li class="listitem"><p>Liegt jetzt unter
192 174
              <code class="varname">$::request-&gt;{cache}{all_units}</code>
193 175
                     </p></li><li class="listitem"><p>Wird nur in
194 176
              <code class="function">AM-&gt;retrieve_all_units()</code> gesetzt oder
195
              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
177
              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
196 178
              abzufangen.</p></li><li class="listitem"><p>Wurde entfernt, weil callsub nur einen Bruchteil der
197 179
              m?glichen Rekursioenen darstellt, und da nie welche
198 180
              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
2 2
      <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
3 3
   <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">&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="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
4 4
        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
5
        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">&nbsp;</td><td width="20%" align="center">&nbsp;</td><td width="40%" align="right">&nbsp;<a accesskey="n" href="ch01.html">Weiter</a></td></tr><tr><td width="40%" align="left" valign="top">&nbsp;</td><td width="20%" align="center">&nbsp;</td><td width="40%" align="right" valign="top">&nbsp;Kapitel 1. Aktuelle Hinweise</td></tr></table></div></body></html>
5
        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">&nbsp;</td><td width="20%" align="center">&nbsp;</td><td width="40%" align="right">&nbsp;<a accesskey="n" href="ch01.html">Weiter</a></td></tr><tr><td width="40%" align="left" valign="top">&nbsp;</td><td width="20%" align="center">&nbsp;</td><td width="40%" align="right" valign="top">&nbsp;Kapitel 1. Aktuelle Hinweise</td></tr></table></div></body></html>

Auch abrufbar als: Unified diff