Revision b5240726
Von Moritz Bunkus vor mehr als 10 Jahren hinzugefügt
doc/dokumentation.xml | ||
---|---|---|
2232 | 2232 |
Abrechnungszeitraum explizit auszuweisen. Eine Variable hat dabei die Syntax <literal><%variablenname%></literal>. |
2233 | 2233 |
</para> |
2234 | 2234 |
|
2235 |
<para> |
|
2236 |
Sofern es sich um eine Datumsvariable handelt, kann das Ausgabeformat weiter bestimmt werden, indem an den Variablennamen |
|
2237 |
Formatoptionen angehängt werden. Die Syntax sieht dabei wie folgt aus: <literal><%variablenname |
|
2238 |
FORMAT=Formatinformation%></literal>. Die zur verfügung stehenden Formatinformationen werden unten genauer beschrieben. |
|
2239 |
</para> |
|
2240 |
|
|
2235 | 2241 |
<para> |
2236 | 2242 |
Diese Variablen werden in den folgenden Elementen des Auftrags ersetzt: |
2237 | 2243 |
</para> |
... | ... | |
2297 | 2303 |
</listitem> |
2298 | 2304 |
</varlistentry> |
2299 | 2305 |
</variablelist> |
2306 |
|
|
2307 |
<para> |
|
2308 |
Die invidiuellen Formatinformationen bestehen aus Paaren von Prozentzeichen und einem Buchstaben, welche beide zusammen durch den |
|
2309 |
dazugehörigen Wert ersetzt werden. So wird z.B. <literal>%Y</literal> durch das viertstellige Jahr ersetzt. Alle möglichen |
|
2310 |
Platzhalter sind: |
|
2311 |
</para> |
|
2312 |
|
|
2313 |
|
|
2314 |
<variablelist> |
|
2315 |
<varlistentry> |
|
2316 |
<term><varname>%a</varname></term> |
|
2317 |
|
|
2318 |
<listitem> |
|
2319 |
<para>Der abgekürzte Wochentagsname.</para> |
|
2320 |
</listitem> |
|
2321 |
</varlistentry> |
|
2322 |
|
|
2323 |
<varlistentry> |
|
2324 |
<term><varname>%A</varname></term> |
|
2325 |
|
|
2326 |
<listitem> |
|
2327 |
<para>Der ausgeschriebene Wochentagsname.</para> |
|
2328 |
</listitem> |
|
2329 |
</varlistentry> |
|
2330 |
|
|
2331 |
<varlistentry> |
|
2332 |
<term><varname>%b</varname></term> |
|
2333 |
|
|
2334 |
<listitem> |
|
2335 |
<para>Der abgekürzte Monatsname.</para> |
|
2336 |
</listitem> |
|
2337 |
</varlistentry> |
|
2338 |
|
|
2339 |
<varlistentry> |
|
2340 |
<term><varname>%B</varname></term> |
|
2341 |
|
|
2342 |
<listitem> |
|
2343 |
<para>Der ausgeschriebene Monatsname.</para> |
|
2344 |
</listitem> |
|
2345 |
</varlistentry> |
|
2346 |
|
|
2347 |
<varlistentry> |
|
2348 |
<term><varname>%C</varname></term> |
|
2349 |
|
|
2350 |
<listitem> |
|
2351 |
<para>Das Jahrhundert (Jahr/100) als eine zweistellige Zahl.</para> |
|
2352 |
</listitem> |
|
2353 |
</varlistentry> |
|
2354 |
|
|
2355 |
<varlistentry> |
|
2356 |
<term><varname>%d</varname></term> |
|
2357 |
|
|
2358 |
<listitem> |
|
2359 |
<para>Der Monatstag als Zahl zwischen 01 und 31.</para> |
|
2360 |
</listitem> |
|
2361 |
</varlistentry> |
|
2362 |
|
|
2363 |
<varlistentry> |
|
2364 |
<term><varname>%D</varname></term> |
|
2365 |
|
|
2366 |
<listitem> |
|
2367 |
<para>Entspricht %m/%d/%y (amerikanisches Datumsformat).</para> |
|
2368 |
</listitem> |
|
2369 |
</varlistentry> |
|
2370 |
|
|
2371 |
<varlistentry> |
|
2372 |
<term><varname>%e</varname></term> |
|
2373 |
|
|
2374 |
<listitem> |
|
2375 |
<para>Wie %d (Monatstag als Zahl zwischen 1 und 31), allerdings werden führende Nullen durch Leerzeichen ersetzt.</para> |
|
2376 |
</listitem> |
|
2377 |
</varlistentry> |
|
2378 |
|
|
2379 |
<varlistentry> |
|
2380 |
<term><varname>%F</varname></term> |
|
2381 |
|
|
2382 |
<listitem> |
|
2383 |
<para>Entspricht %Y-%m-%d (das ISO-8601-Datumsformat).</para> |
|
2384 |
</listitem> |
|
2385 |
</varlistentry> |
|
2386 |
|
|
2387 |
<varlistentry> |
|
2388 |
<term><varname>%j</varname></term> |
|
2389 |
|
|
2390 |
<listitem> |
|
2391 |
<para>Der Tag im Jahr als Zahl zwischen 001 und 366 inklusive.</para> |
|
2392 |
</listitem> |
|
2393 |
</varlistentry> |
|
2394 |
|
|
2395 |
<varlistentry> |
|
2396 |
<term><varname>%m</varname></term> |
|
2397 |
|
|
2398 |
<listitem> |
|
2399 |
<para>Der Monat als Zahl zwischen 01 und 12 inklusive.</para> |
|
2400 |
</listitem> |
|
2401 |
</varlistentry> |
|
2402 |
|
|
2403 |
<varlistentry> |
|
2404 |
<term><varname>%u</varname></term> |
|
2405 |
|
|
2406 |
<listitem> |
|
2407 |
<para>Der Wochentag als Zahl zwischen 1 und 7 inklusive, wobei die 1 dem Montag entspricht.</para> |
|
2408 |
</listitem> |
|
2409 |
</varlistentry> |
|
2410 |
|
|
2411 |
<varlistentry> |
|
2412 |
<term><varname>%U</varname></term> |
|
2413 |
|
|
2414 |
<listitem> |
|
2415 |
<para>Die Wochennummer als Zahl zwischen 00 und 53 inklusive, wobei der erste Sonntag im Jahr das Startdatum von Woche 01 ist.</para> |
|
2416 |
</listitem> |
|
2417 |
</varlistentry> |
|
2418 |
|
|
2419 |
<varlistentry> |
|
2420 |
<term><varname>%V</varname></term> |
|
2421 |
|
|
2422 |
<listitem> |
|
2423 |
<para>Die ISO-8601:1988-Wochennummer als Zahl zwischen 01 und 53 inklusive, wobei Woche 01 die erste Woche, von der mindestens vier Tage im Jahr liegen; Montag ist erster Tag der Woche.</para> |
|
2424 |
</listitem> |
|
2425 |
</varlistentry> |
|
2426 |
|
|
2427 |
<varlistentry> |
|
2428 |
<term><varname>%w</varname></term> |
|
2429 |
|
|
2430 |
<listitem> |
|
2431 |
<para>Der Wochentag als Zahl zwischen 0 und 6 inklusive, wobei die 0 dem Sonntag entspricht.</para> |
|
2432 |
</listitem> |
|
2433 |
</varlistentry> |
|
2434 |
|
|
2435 |
<varlistentry> |
|
2436 |
<term><varname>%W</varname></term> |
|
2437 |
|
|
2438 |
<listitem> |
|
2439 |
<para>Die Wochennummer als Zahl zwischen 00 und 53 inklusive, wobei der erste Montag im Jahr das Startdatum von Woche 01 ist.</para> |
|
2440 |
</listitem> |
|
2441 |
</varlistentry> |
|
2442 |
|
|
2443 |
<varlistentry> |
|
2444 |
<term><varname>%y</varname></term> |
|
2445 |
|
|
2446 |
<listitem> |
|
2447 |
<para>Das Jahr als zweistellige Zahl zwischen 00 und 99 inklusive.</para> |
|
2448 |
</listitem> |
|
2449 |
</varlistentry> |
|
2450 |
|
|
2451 |
<varlistentry> |
|
2452 |
<term><varname>%Y</varname></term> |
|
2453 |
|
|
2454 |
<listitem> |
|
2455 |
<para>Das Jahr als vierstellige Zahl.</para> |
|
2456 |
</listitem> |
|
2457 |
</varlistentry> |
|
2458 |
|
|
2459 |
<varlistentry> |
|
2460 |
<term><varname>%%</varname></term> |
|
2461 |
|
|
2462 |
<listitem> |
|
2463 |
<para>Das Prozentzeichen selber.</para> |
|
2464 |
</listitem> |
|
2465 |
</varlistentry> |
|
2466 |
</variablelist> |
|
2467 |
|
|
2468 |
<para> |
|
2469 |
Anwendungsbeispiel für die Ausgabe, von welchem Monat und Jahr bis zu welchem Monat und Jahr die aktuelle Abrechnungsperiode |
|
2470 |
dauert: <literal>Abrechnungszeitrum: <%period_start_date FORMAT=%m/%Y%> bis <%period_end_date FORMAT=%m/%Y%></literal> |
|
2471 |
</para> |
|
2300 | 2472 |
</sect2> |
2301 | 2473 |
|
2302 | 2474 |
<sect2 id="features.periodic-invoices.reports"> |
doc/html/ch03.html | ||
---|---|---|
42 | 42 |
Um die erzeugten Rechnungen individualisieren zu können, werden beim Umwandeln des Auftrags in eine Rechnung einige speziell |
43 | 43 |
formatierte Variablen durch für die jeweils aktuelle Abrechnungsperiode gültigen Werte ersetzt. Damit ist es möglich, z.B. den |
44 | 44 |
Abrechnungszeitraum explizit auszuweisen. Eine Variable hat dabei die Syntax <code class="literal"><%variablenname%></code>. |
45 |
</p><p> |
|
46 |
Sofern es sich um eine Datumsvariable handelt, kann das Ausgabeformat weiter bestimmt werden, indem an den Variablennamen |
|
47 |
Formatoptionen angehängt werden. Die Syntax sieht dabei wie folgt aus: <code class="literal"><%variablenname |
|
48 |
FORMAT=Formatinformation%></code>. Die zur verfügung stehenden Formatinformationen werden unten genauer beschrieben. |
|
45 | 49 |
</p><p> |
46 | 50 |
Diese Variablen werden in den folgenden Elementen des Auftrags ersetzt: |
47 | 51 |
</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Bemerkungen</p></li><li class="listitem"><p>Interne Bemerkungen</p></li><li class="listitem"><p>Vorgangsbezeichnung</p></li><li class="listitem"><p>In den Beschreibungs- und Langtextfeldern aller Positionen</p></li></ul></div><p>Die zur Verfügung stehenden Variablen sind die Folgenden:</p><div class="variablelist"><dl><dt><span class="term"> |
... | ... | |
65 | 69 |
</span></dt><dd><p> |
66 | 70 |
Formatiertes Datum des ersten und letzten Tages im Abrechnungszeitraum (z.B. bei quartalsweiser Abrechnung und im ersten |
67 | 71 |
Quartal von 2013 wären dies der <code class="literal">01.01.2013</code> und <code class="literal">31.03.2013</code>). |
68 |
</p></dd></dl></div></div><div class="sect2" title="3.1.4. Auflisten"><div class="titlepage"><div><div><h3 class="title"><a name="features.periodic-invoices.reports"></a>3.1.4. Auflisten</h3></div></div></div><p>Unter Verkauf->Berichte->Aufträge finden sich zwei neue |
|
72 |
</p></dd></dl></div><p> |
|
73 |
Die invidiuellen Formatinformationen bestehen aus Paaren von Prozentzeichen und einem Buchstaben, welche beide zusammen durch den |
|
74 |
dazugehörigen Wert ersetzt werden. So wird z.B. <code class="literal">%Y</code> durch das viertstellige Jahr ersetzt. Alle möglichen |
|
75 |
Platzhalter sind: |
|
76 |
</p><div class="variablelist"><dl><dt><span class="term"> |
|
77 |
<code class="varname">%a</code> |
|
78 |
</span></dt><dd><p>Der abgekürzte Wochentagsname.</p></dd><dt><span class="term"> |
|
79 |
<code class="varname">%A</code> |
|
80 |
</span></dt><dd><p>Der ausgeschriebene Wochentagsname.</p></dd><dt><span class="term"> |
|
81 |
<code class="varname">%b</code> |
|
82 |
</span></dt><dd><p>Der abgekürzte Monatsname.</p></dd><dt><span class="term"> |
|
83 |
<code class="varname">%B</code> |
|
84 |
</span></dt><dd><p>Der ausgeschriebene Monatsname.</p></dd><dt><span class="term"> |
|
85 |
<code class="varname">%C</code> |
|
86 |
</span></dt><dd><p>Das Jahrhundert (Jahr/100) als eine zweistellige Zahl.</p></dd><dt><span class="term"> |
|
87 |
<code class="varname">%d</code> |
|
88 |
</span></dt><dd><p>Der Monatstag als Zahl zwischen 01 und 31.</p></dd><dt><span class="term"> |
|
89 |
<code class="varname">%D</code> |
|
90 |
</span></dt><dd><p>Entspricht %m/%d/%y (amerikanisches Datumsformat).</p></dd><dt><span class="term"> |
|
91 |
<code class="varname">%e</code> |
|
92 |
</span></dt><dd><p>Wie %d (Monatstag als Zahl zwischen 1 und 31), allerdings werden führende Nullen durch Leerzeichen ersetzt.</p></dd><dt><span class="term"> |
|
93 |
<code class="varname">%F</code> |
|
94 |
</span></dt><dd><p>Entspricht %Y-%m-%d (das ISO-8601-Datumsformat).</p></dd><dt><span class="term"> |
|
95 |
<code class="varname">%j</code> |
|
96 |
</span></dt><dd><p>Der Tag im Jahr als Zahl zwischen 001 und 366 inklusive.</p></dd><dt><span class="term"> |
|
97 |
<code class="varname">%m</code> |
|
98 |
</span></dt><dd><p>Der Monat als Zahl zwischen 01 und 12 inklusive.</p></dd><dt><span class="term"> |
|
99 |
<code class="varname">%u</code> |
|
100 |
</span></dt><dd><p>Der Wochentag als Zahl zwischen 1 und 7 inklusive, wobei die 1 dem Montag entspricht.</p></dd><dt><span class="term"> |
|
101 |
<code class="varname">%U</code> |
|
102 |
</span></dt><dd><p>Die Wochennummer als Zahl zwischen 00 und 53 inklusive, wobei der erste Sonntag im Jahr das Startdatum von Woche 01 ist.</p></dd><dt><span class="term"> |
|
103 |
<code class="varname">%V</code> |
|
104 |
</span></dt><dd><p>Die ISO-8601:1988-Wochennummer als Zahl zwischen 01 und 53 inklusive, wobei Woche 01 die erste Woche, von der mindestens vier Tage im Jahr liegen; Montag ist erster Tag der Woche.</p></dd><dt><span class="term"> |
|
105 |
<code class="varname">%w</code> |
|
106 |
</span></dt><dd><p>Der Wochentag als Zahl zwischen 0 und 6 inklusive, wobei die 0 dem Sonntag entspricht.</p></dd><dt><span class="term"> |
|
107 |
<code class="varname">%W</code> |
|
108 |
</span></dt><dd><p>Die Wochennummer als Zahl zwischen 00 und 53 inklusive, wobei der erste Montag im Jahr das Startdatum von Woche 01 ist.</p></dd><dt><span class="term"> |
|
109 |
<code class="varname">%y</code> |
|
110 |
</span></dt><dd><p>Das Jahr als zweistellige Zahl zwischen 00 und 99 inklusive.</p></dd><dt><span class="term"> |
|
111 |
<code class="varname">%Y</code> |
|
112 |
</span></dt><dd><p>Das Jahr als vierstellige Zahl.</p></dd><dt><span class="term"> |
|
113 |
<code class="varname">%%</code> |
|
114 |
</span></dt><dd><p>Das Prozentzeichen selber.</p></dd></dl></div><p> |
|
115 |
Anwendungsbeispiel für die Ausgabe, von welchem Monat und Jahr bis zu welchem Monat und Jahr die aktuelle Abrechnungsperiode |
|
116 |
dauert: <code class="literal">Abrechnungszeitrum: <%period_start_date FORMAT=%m/%Y%> bis <%period_end_date FORMAT=%m/%Y%></code> |
|
117 |
|
|
118 |
</p></div><div class="sect2" title="3.1.4. Auflisten"><div class="titlepage"><div><div><h3 class="title"><a name="features.periodic-invoices.reports"></a>3.1.4. Auflisten</h3></div></div></div><p>Unter Verkauf->Berichte->Aufträge finden sich zwei neue |
|
69 | 119 |
Checkboxen, "Wiederkehrende Rechnungen aktiv" und "Wiederkehrende |
70 | 120 |
Rechnungen inaktiv", mit denen man sich einen Überglick über die |
71 | 121 |
wiederkehrenden Rechnungen verschaffen kann.</p></div><div class="sect2" title="3.1.5. Erzeugung der eigentlichen Rechnungen"><div class="titlepage"><div><div><h3 class="title"><a name="features.periodic-invoices.task-server"></a>3.1.5. Erzeugung der eigentlichen Rechnungen</h3></div></div></div><p>Die zeitliche und periodische Überprüfung, ob eine |
doc/html/ch03s02.html | ||
---|---|---|
423 | 423 |
<code class="varname">ordnumber_oe</code> |
424 | 424 |
</span></dt><dd><p>Auftragsnummer des Originalauftrags, wenn die Rechnung |
425 | 425 |
aus einem Sammelauftrag erstellt wurde</p></dd><dt><span class="term"> |
426 |
<code class="varname">donumber_do</code> |
|
427 |
</span></dt><dd><p>Lieferscheinnummer desjenigen Lieferscheins, aus dem die Position stammt, sofern die Rechnung aus einem oder |
|
428 |
mehreren Lieferscheinen erstellt wurde</p></dd><dt><span class="term"> |
|
426 | 429 |
<code class="varname">p_discount</code> |
427 | 430 |
</span></dt><dd><p>Rabatt in Prozent</p></dd><dt><span class="term"> |
428 | 431 |
<code class="varname">partnotes</code> |
... | ... | |
566 | 569 |
<code class="varname">invdate</code> |
567 | 570 |
</span></dt><dd><p>Rechnungsdatum</p></dd><dt><span class="term"> |
568 | 571 |
<code class="varname">invnumber</code> |
569 |
</span></dt><dd><p>Rechnungsnummer</p></dd></dl></div></div></div><div class="sect2" title="3.2.10. Variablen in anderen Vorlagen"><div class="titlepage"><div><div><h3 class="title"><a name="dokumentenvorlagen-und-variablen.andere-vorlagen"></a>3.2.10. Variablen in anderen Vorlagen</h3></div></div></div><div class="sect3" title="3.2.10.1. Einführung"><div class="titlepage"><div><div><h4 class="title"><a name="d0e4776"></a>3.2.10.1. Einführung</h4></div></div></div><p>Die Variablen in anderen Vorlagen sind ähnlich wie in der
|
|
572 |
</span></dt><dd><p>Rechnungsnummer</p></dd></dl></div></div></div><div class="sect2" title="3.2.10. Variablen in anderen Vorlagen"><div class="titlepage"><div><div><h3 class="title"><a name="dokumentenvorlagen-und-variablen.andere-vorlagen"></a>3.2.10. Variablen in anderen Vorlagen</h3></div></div></div><div class="sect3" title="3.2.10.1. Einführung"><div class="titlepage"><div><div><h4 class="title"><a name="d0e4972"></a>3.2.10.1. Einführung</h4></div></div></div><p>Die Variablen in anderen Vorlagen sind ähnlich wie in der
|
|
570 | 573 |
Rechnung. Allerdings heißen die Variablen, die mit |
571 | 574 |
<code class="varname">inv</code> beginnen, jetzt anders. Bei den Angeboten |
572 | 575 |
fangen sie mit <code class="varname">quo</code> für "quotation" an: |
doc/html/ch04.html | ||
---|---|---|
1 | 1 |
<html><head> |
2 | 2 |
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> |
3 |
<title>Kapitel 4. Entwicklerdokumentation</title><link rel="stylesheet" type="text/css" href="style.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1-RC2"><link rel="home" href="index.html" title="kivitendo 3.1.0: Installation, Konfiguration, Entwicklung"><link rel="up" href="index.html" title="kivitendo 3.1.0: Installation, Konfiguration, Entwicklung"><link rel="prev" href="ch03s04.html" title="3.4. Mandantenkonfiguration Lager"><link rel="next" href="ch04s02.html" title="4.2. Entwicklung unter FastCGI"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Kapitel 4. Entwicklerdokumentation</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch03s04.html">Zurück</a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="ch04s02.html">Weiter</a></td></tr></table><hr></div><div class="chapter" title="Kapitel 4. Entwicklerdokumentation"><div class="titlepage"><div><div><h2 class="title"><a name="d0e5414"></a>Kapitel 4. Entwicklerdokumentation</h2></div></div></div><div class="sect1" title="4.1. Globale Variablen"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="devel.globals"></a>4.1. Globale Variablen</h2></div></div></div><div class="sect2" title="4.1.1. Wie sehen globale Variablen in Perl aus?"><div class="titlepage"><div><div><h3 class="title"><a name="d0e5420"></a>4.1.1. Wie sehen globale Variablen in Perl aus?</h3></div></div></div><p>Globale Variablen liegen in einem speziellen namespace namens
|
|
3 |
<title>Kapitel 4. Entwicklerdokumentation</title><link rel="stylesheet" type="text/css" href="style.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1-RC2"><link rel="home" href="index.html" title="kivitendo 3.1.0: Installation, Konfiguration, Entwicklung"><link rel="up" href="index.html" title="kivitendo 3.1.0: Installation, Konfiguration, Entwicklung"><link rel="prev" href="ch03s04.html" title="3.4. Mandantenkonfiguration Lager"><link rel="next" href="ch04s02.html" title="4.2. Entwicklung unter FastCGI"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Kapitel 4. Entwicklerdokumentation</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch03s04.html">Zurück</a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="ch04s02.html">Weiter</a></td></tr></table><hr></div><div class="chapter" title="Kapitel 4. Entwicklerdokumentation"><div class="titlepage"><div><div><h2 class="title"><a name="d0e5610"></a>Kapitel 4. Entwicklerdokumentation</h2></div></div></div><div class="sect1" title="4.1. Globale Variablen"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="devel.globals"></a>4.1. Globale Variablen</h2></div></div></div><div class="sect2" title="4.1.1. Wie sehen globale Variablen in Perl aus?"><div class="titlepage"><div><div><h3 class="title"><a name="d0e5616"></a>4.1.1. Wie sehen globale Variablen in Perl aus?</h3></div></div></div><p>Globale Variablen liegen in einem speziellen namespace namens
|
|
4 | 4 |
"main", der von überall erreichbar ist. Darüber hinaus sind bareword |
5 | 5 |
globs global und die meisten speziellen Variablen sind... |
6 | 6 |
speziell.</p><p>Daraus ergeben sich folgende Formen:</p><div class="variablelist"><dl><dt><span class="term"> |
... | ... | |
25 | 25 |
<code class="varname">$PACKAGE::form</code>.</p></dd><dt><span class="term"> |
26 | 26 |
<code class="literal">local $form</code> |
27 | 27 |
</span></dt><dd><p>Alle Änderungen an <code class="varname">$form</code> werden am Ende |
28 |
des scopes zurückgesetzt</p></dd></dl></div></div><div class="sect2" title="4.1.2. Warum sind globale Variablen ein Problem?"><div class="titlepage"><div><div><h3 class="title"><a name="d0e5521"></a>4.1.2. Warum sind globale Variablen ein Problem?</h3></div></div></div><p>Das erste Problem ist <span class="productname">FCGI</span>™.</p><p>
|
|
28 |
des scopes zurückgesetzt</p></dd></dl></div></div><div class="sect2" title="4.1.2. Warum sind globale Variablen ein Problem?"><div class="titlepage"><div><div><h3 class="title"><a name="d0e5717"></a>4.1.2. Warum sind globale Variablen ein Problem?</h3></div></div></div><p>Das erste Problem ist <span class="productname">FCGI</span>™.</p><p>
|
|
29 | 29 |
<span class="productname">SQL-Ledger</span>™ hat fast alles im globalen |
30 | 30 |
namespace abgelegt, und erwartet, dass es da auch wiederzufinden ist. |
31 | 31 |
Unter <span class="productname">FCGI</span>™ müssen diese Sachen aber wieder |
... | ... | |
39 | 39 |
dies hat, seit der Einführung, u.a. schon so manche langwierige |
40 | 40 |
Bug-Suche verkürzt. Da globale Variablen aber implizit mit Package |
41 | 41 |
angegeben werden, werden die nicht geprüft, und somit kann sich |
42 |
schnell ein Tippfehler einschleichen.</p></div><div class="sect2" title="4.1.3. Kanonische globale Variablen"><div class="titlepage"><div><div><h3 class="title"><a name="d0e5554"></a>4.1.3. Kanonische globale Variablen</h3></div></div></div><p>Um dieses Problem im Griff zu halten gibt es einige wenige
|
|
42 |
schnell ein Tippfehler einschleichen.</p></div><div class="sect2" title="4.1.3. Kanonische globale Variablen"><div class="titlepage"><div><div><h3 class="title"><a name="d0e5750"></a>4.1.3. Kanonische globale Variablen</h3></div></div></div><p>Um dieses Problem im Griff zu halten gibt es einige wenige
|
|
43 | 43 |
globale Variablen, die kanonisch sind, d.h. sie haben bestimmte |
44 | 44 |
vorgegebenen Eigenschaften, und alles andere sollte anderweitig |
45 | 45 |
umhergereicht werden.</p><p>Diese Variablen sind im Moment die folgenden neun:</p><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p> |
... | ... | |
62 | 62 |
<code class="varname">$::request</code> |
63 | 63 |
</p></li></ul></div><p>Damit diese nicht erneut als Müllhalde missbraucht werden, im |
64 | 64 |
Folgenden eine kurze Erläuterung der bestimmten vorgegebenen |
65 |
Eigenschaften (Konventionen):</p><div class="sect3" title="4.1.3.1. $::form"><div class="titlepage"><div><div><h4 class="title"><a name="d0e5618"></a>4.1.3.1. $::form</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Ist ein Objekt der Klasse
|
|
65 |
Eigenschaften (Konventionen):</p><div class="sect3" title="4.1.3.1. $::form"><div class="titlepage"><div><div><h4 class="title"><a name="d0e5814"></a>4.1.3.1. $::form</h4></div></div></div><div class="itemizedlist"><ul class="itemizedlist" type="disc"><li class="listitem"><p>Ist ein Objekt der Klasse
|
|
66 | 66 |
"<code class="classname">Form</code>"</p></li><li class="listitem"><p>Wird nach jedem Request gelöscht</p></li><li class="listitem"><p>Muss auch in Tests und Konsolenscripts vorhanden |
67 | 67 |
sein.</p></li><li class="listitem"><p>Enthält am Anfang eines Requests die Requestparameter vom |
68 | 68 |
User</p></li><li class="listitem"><p>Kann zwar intern über Requestgrenzen ein Datenbankhandle |
... | ... | |
110 | 110 |
push @{ $form->{TEMPLATE_ARRAYS}{number} }, $form->{"partnumber_$i"}; |
111 | 111 |
push @{ $form->{TEMPLATE_ARRAYS}{description} }, $form->{"description_$i"}; |
112 | 112 |
# ... |
113 |
}</pre></div><div class="sect3" title="4.1.3.2. %::myconfig"><div class="titlepage"><div><div><h4 class="title"><a name="d0e5702"></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
|
|
113 |
}</pre></div><div class="sect3" title="4.1.3.2. %::myconfig"><div class="titlepage"><div><div><h4 class="title"><a name="d0e5898"></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
|
|
114 | 114 |
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 |
115 | 115 |
extern serialisiert werden, weil da auch der Datenbankzugriff |
116 | 116 |
für diesen user drinsteht.</p></li><li class="listitem"><p>Enthält unter anderem Listenbegrenzung vclimit, |
... | ... | |
122 | 122 |
überwiegend die Daten, die sich unter <span class="guimenu">Programm</span> |
123 | 123 |
-> <span class="guimenuitem">Einstellungen</span> befinden, bzw. die |
124 | 124 |
Informationen über den Benutzer die über die |
125 |
Administrator-Schnittstelle eingegeben wurden.</p></div><div class="sect3" title="4.1.3.3. $::locale"><div class="titlepage"><div><div><h4 class="title"><a name="d0e5741"></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
|
|
125 |
Administrator-Schnittstelle eingegeben wurden.</p></div><div class="sect3" title="4.1.3.3. $::locale"><div class="titlepage"><div><div><h4 class="title"><a name="d0e5937"></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
|
|
126 | 126 |
sein.</p></li><li class="listitem"><p>Cached intern über Requestgrenzen hinweg benutzte |
127 | 127 |
Locales</p></li></ul></div><p>Lokalisierung für den aktuellen User. Alle Übersetzungen, |
128 |
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="d0e5759"></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
|
|
128 |
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="d0e5955"></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
|
|
129 | 129 |
Funktionen</p></li></ul></div><p> |
130 | 130 |
<code class="varname">$::lxdebug</code> stellt Debuggingfunktionen |
131 | 131 |
bereit, wie "<code class="function">enter_sub</code>" und |
... | ... | |
135 | 135 |
"<code class="function">message</code>" und "<code class="function">dump</code>" mit |
136 | 136 |
denen man flott Informationen ins Log (tmp/kivitendo-debug.log) |
137 | 137 |
packen kann.</p><p>Beispielsweise so:</p><pre class="programlisting">$main::lxdebug->message(0, 'Meine Konfig:' . Dumper (%::myconfig)); |
138 |
$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="d0e5796"></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>
|
|
138 |
$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="d0e5992"></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>
|
|
139 | 139 |
<code class="varname">$::auth</code> stellt Funktionen bereit um die |
140 | 140 |
Rechte des aktuellen Users abzufragen. Obwohl diese Informationen |
141 | 141 |
vom aktuellen User abhängen wird das Objekt aus |
142 | 142 |
Geschwindigkeitsgründen nur einmal angelegt und dann nach jedem |
143 | 143 |
Request kurz resettet.</p><p>Dieses Objekt kapselt auch den gerade aktiven Mandanten. Dessen Einstellungen können über |
144 | 144 |
<code class="literal">$::auth->client</code> abgefragt werden; Rückgabewert ist ein Hash mit den Werten aus der Tabelle |
145 |
<code class="literal">auth.clients</code>.</p></div><div class="sect3" title="4.1.3.6. $::lx_office_conf"><div class="titlepage"><div><div><h4 class="title"><a name="d0e5825"></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
|
|
145 |
<code class="literal">auth.clients</code>.</p></div><div class="sect3" title="4.1.3.6. $::lx_office_conf"><div class="titlepage"><div><div><h4 class="title"><a name="d0e6021"></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
|
|
146 | 146 |
"<code class="classname">SL::LxOfficeConf</code>"</p></li><li class="listitem"><p>Global gecached</p></li><li class="listitem"><p>Repräsentation der |
147 | 147 |
<code class="filename">config/kivitendo.conf[.default]</code>-Dateien</p></li></ul></div><p>Globale Konfiguration. Configdateien werden zum Start gelesen |
148 | 148 |
und danach nicht mehr angefasst. Es ist derzeit nicht geplant, dass |
... | ... | |
152 | 152 |
file_name = /tmp/kivitendo-debug.log</pre><p>ist der Key <code class="varname">file</code> im Programm als |
153 | 153 |
<code class="varname">$::lx_office_conf->{debug}{file}</code> |
154 | 154 |
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 |
155 |
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="d0e5861"></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
|
|
155 |
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="d0e6057"></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
|
|
156 | 156 |
"<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>, |
157 | 157 |
speichert aber Daten die von der Instanz abhängig sind. Eine Instanz |
158 | 158 |
ist hier eine Mandantendatenbank. Beispielsweise überprüft |
159 | 159 |
</p><pre class="programlisting">$::instance_conf->get_inventory_system eq 'perpetual'</pre><p> |
160 |
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="d0e5882"></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
|
|
160 |
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="d0e6078"></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
|
|
161 | 161 |
"<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 |
162 | 162 |
Server</p></li></ul></div><p>Der dritte Punkt ist auch der einzige Grund warum das Objekt |
163 | 163 |
global gespeichert wird. Wird vermutlich irgendwann in einem anderen |
164 |
Objekt untergebracht.</p></div><div class="sect3" title="4.1.3.9. $::request"><div class="titlepage"><div><div><h4 class="title"><a name="d0e5900"></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>
|
|
164 |
Objekt untergebracht.</p></div><div class="sect3" title="4.1.3.9. $::request"><div class="titlepage"><div><div><h4 class="title"><a name="d0e6096"></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>
|
|
165 | 165 |
<code class="varname">$::request</code> ist ein generischer Platz um |
166 | 166 |
Daten "für den aktuellen Request" abzulegen. Sollte nicht für action |
167 | 167 |
at a distance benutzt werden, sondern um lokales memoizing zu |
... | ... | |
174 | 174 |
<code class="varname">$::request</code> |
175 | 175 |
</p></li><li class="listitem"><p>Muss ich von anderen Teilen des Programms lesend drauf |
176 | 176 |
zugreifen? Dann <code class="varname">$::request</code>, aber Zugriff über |
177 |
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="d0e5942"></a>4.1.4. Ehemalige globale Variablen</h3></div></div></div><p>Die folgenden Variablen waren einmal im Programm, und wurden
|
|
178 |
entfernt.</p><div class="sect3" title="4.1.4.1. $::cgi"><div class="titlepage"><div><div><h4 class="title"><a name="d0e5947"></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
|
|
177 |
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="d0e6138"></a>4.1.4. Ehemalige globale Variablen</h3></div></div></div><p>Die folgenden Variablen waren einmal im Programm, und wurden
|
|
178 |
entfernt.</p><div class="sect3" title="4.1.4.1. $::cgi"><div class="titlepage"><div><div><h4 class="title"><a name="d0e6143"></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
|
|
179 | 179 |
Klassenfunktionen funktionieren</p></li><li class="listitem"><p>Aufruf als Klasse erzeugt Dummyobjekt was im |
180 | 180 |
Klassennamespace gehalten wird und über Requestgrenzen |
181 | 181 |
leaked</p></li><li class="listitem"><p>liegt jetzt unter |
182 | 182 |
<code class="varname">$::request->{cgi}</code> |
183 |
</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="d0e5963"></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
|
|
183 |
</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="d0e6159"></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
|
|
184 | 184 |
ein paar hundert mal pro Request eine Liste der Einheiten |
185 | 185 |
brauchen, und de als Parameter durch einen Riesenstack von |
186 | 186 |
Funktionen geschleift werden müssten.</p></li><li class="listitem"><p>Liegt jetzt unter |
187 | 187 |
<code class="varname">$::request->{cache}{all_units}</code> |
188 | 188 |
</p></li><li class="listitem"><p>Wird nur in |
189 | 189 |
<code class="function">AM->retrieve_all_units()</code> gesetzt oder |
190 |
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="d0e5982"></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
|
|
190 |
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="d0e6178"></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
|
|
191 | 191 |
abzufangen.</p></li><li class="listitem"><p>Wurde entfernt, weil callsub nur einen Bruchteil der |
192 | 192 |
möglichen Rekursioenen darstellt, und da nie welche |
193 | 193 |
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="ch03s04.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.4. Mandantenkonfiguration Lager </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 | ||
---|---|---|
3 | 3 |
<title>kivitendo 3.1.0: Installation, Konfiguration, Entwicklung</title><link rel="stylesheet" type="text/css" href="style.css"><meta name="generator" content="DocBook XSL Stylesheets V1.76.1-RC2"><link rel="home" href="index.html" title="kivitendo 3.1.0: Installation, Konfiguration, Entwicklung"><link rel="next" href="ch01.html" title="Kapitel 1. Aktuelle Hinweise"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">kivitendo 3.1.0: 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="kivitendo 3.1.0: Installation, Konfiguration, Entwicklung"><div class="titlepage"><div><div><h1 class="title"><a name="kivitendo-documentation"></a>kivitendo 3.1.0: 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#Installation-%C3%9Cbersicht">2.1. Übersicht</a></span></dt><dt><span class="sect1"><a href="ch02s02.html">2.2. Benötigte Software und Pakete</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch02s02.html#Betriebssystem">2.2.1. Betriebssystem</a></span></dt><dt><span class="sect2"><a href="ch02s02.html#Pakete">2.2.2. Benötigte Perl-Pakete installieren</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch02s03.html">2.3. Manuelle Installation des Programmpaketes</a></span></dt><dt><span class="sect1"><a href="ch02s04.html">2.4. kivitendo-Konfigurationsdatei</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch02s04.html#config.config-file.introduction">2.4.1. Einführung</a></span></dt><dt><span class="sect2"><a href="ch02s04.html#config.config-file.sections-parameters">2.4.2. Abschnitte und Parameter</a></span></dt><dt><span class="sect2"><a href="ch02s04.html#config.config-file.prior-versions">2.4.3. Versionen vor 2.6.3</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch02s05.html">2.5. Anpassung der PostgreSQL-Konfiguration</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch02s05.html#Zeichens%C3%A4tze-die-Verwendung-von-UTF-8">2.5.1. Zeichensätze/die Verwendung von Unicode/UTF-8</a></span></dt><dt><span class="sect2"><a href="ch02s05.html#%C3%84nderungen-an-Konfigurationsdateien">2.5.2. Änderungen an Konfigurationsdateien</a></span></dt><dt><span class="sect2"><a href="ch02s05.html#Erweiterung-f%C3%BCr-servergespeicherte-Prozeduren">2.5.3. Erweiterung für servergespeicherte Prozeduren</a></span></dt><dt><span class="sect2"><a href="ch02s05.html#Datenbankbenutzer-anlegen">2.5.4. Datenbankbenutzer anlegen</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch02s06.html">2.6. Webserver-Konfiguration</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch02s06.html#d0e725">2.6.1. Grundkonfiguration mittels CGI</a></span></dt><dt><span class="sect2"><a href="ch02s06.html#Apache-Konfiguration.FCGI">2.6.2. Konfiguration für FastCGI/FCGI</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch02s07.html">2.7. Der Task-Server</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch02s07.html#Konfiguration-des-Task-Servers">2.7.1. Verfügbare und notwendige Konfigurationsoptionen</a></span></dt><dt><span class="sect2"><a href="ch02s07.html#Einbinden-in-den-Boot-Prozess">2.7.2. Automatisches Starten des Task-Servers beim Booten</a></span></dt><dt><span class="sect2"><a href="ch02s07.html#Prozesskontrolle">2.7.3. Wie der Task-Server gestartet und beendet wird</a></span></dt><dt><span class="sect2"><a href="ch02s07.html#Prozesskontrolle2">2.7.4. Task-Server mit mehreren Mandanten</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch02s08.html">2.8. Benutzerauthentifizierung und Administratorpasswort</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch02s08.html#Grundlagen-zur-Benutzerauthentifizierung">2.8.1. Grundlagen zur Benutzerauthentifizierung</a></span></dt><dt><span class="sect2"><a href="ch02s08.html#Administratorpasswort">2.8.2. Administratorpasswort</a></span></dt><dt><span class="sect2"><a href="ch02s08.html#Authentifizierungsdatenbank">2.8.3. Authentifizierungsdatenbank</a></span></dt><dt><span class="sect2"><a href="ch02s08.html#Passwort%C3%BCberpr%C3%BCfung">2.8.4. Passwortüberprüfung</a></span></dt><dt><span class="sect2"><a href="ch02s08.html#Name-des-Session-Cookies">2.8.5. Name des Session-Cookies</a></span></dt><dt><span class="sect2"><a href="ch02s08.html#Anlegen-der-Authentifizierungsdatenbank">2.8.6. Anlegen der Authentifizierungsdatenbank</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch02s09.html">2.9. Mandanten-, Benutzer- und Gruppenverwaltung</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch02s09.html#Zusammenh%C3%A4nge">2.9.1. Zusammenhänge</a></span></dt><dt><span class="sect2"><a href="ch02s09.html#Mandanten-Benutzer-Gruppen">2.9.2. Mandanten, Benutzer und Gruppen</a></span></dt><dt><span class="sect2"><a href="ch02s09.html#Datenbanken-anlegen">2.9.3. Datenbanken anlegen</a></span></dt><dt><span class="sect2"><a href="ch02s09.html#Gruppen-anlegen">2.9.4. Gruppen anlegen</a></span></dt><dt><span class="sect2"><a href="ch02s09.html#Benutzer-anlegen">2.9.5. Benutzer anlegen</a></span></dt><dt><span class="sect2"><a href="ch02s09.html#Mandanten-anlegen">2.9.6. Mandanten anlegen</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch02s10.html">2.10. Drucker- und Systemverwaltung</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch02s10.html#Druckeradministration">2.10.1. Druckeradministration</a></span></dt><dt><span class="sect2"><a href="ch02s10.html#System">2.10.2. System sperren / entsperren</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch02s11.html">2.11. E-Mail-Versand aus kivitendo heraus</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch02s11.html#config.sending-email.sendmail">2.11.1. Versand über lokalen E-Mail-Server</a></span></dt><dt><span class="sect2"><a href="ch02s11.html#config.sending-email.smtp">2.11.2. Versand über einen SMTP-Server</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch02s12.html">2.12. Drucken mit kivitendo</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch02s12.html#Vorlagenverzeichnis-anlegen">2.12.1. Vorlagenverzeichnis anlegen</a></span></dt><dt><span class="sect2"><a href="ch02s12.html#Vorlagen-Standard">2.12.2. Standard</a></span></dt><dt><span class="sect2"><a href="ch02s12.html#f-tex">2.12.3. f-tex</a></span></dt><dt><span class="sect2"><a href="ch02s12.html#Vorlagen-RB">2.12.4. Der Druckvorlagensatz RB</a></span></dt><dt><span class="sect2"><a href="ch02s12.html#allgemeine-hinweise-zu-latex">2.12.5. Allgemeine Hinweise zu LaTeX Vorlagen</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch02s13.html">2.13. OpenDocument-Vorlagen</a></span></dt><dt><span class="sect1"><a href="ch02s14.html">2.14. Konfiguration zur Einnahmenüberschussrechnung/Bilanzierung: |
4 | 4 |
EUR</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch02s14.html#config.eur.introduction">2.14.1. Einführung</a></span></dt><dt><span class="sect2"><a href="ch02s14.html#config.eur.parameters">2.14.2. Konfigurationsparameter</a></span></dt><dt><span class="sect2"><a href="ch02s14.html#config.eur.setting-parameters">2.14.3. Festlegen der Parameter</a></span></dt><dt><span class="sect2"><a href="ch02s14.html#config.eur.inventory-system-perpetual">2.14.4. Bemerkungen zu Bestandsmethode</a></span></dt><dt><span class="sect2"><a href="ch02s14.html#config.eur.knonw-issues">2.14.5. Bekannte Probleme</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch02s15.html">2.15. SKR04 19% Umstellung für innergemeinschaftlichen Erwerb</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch02s15.html#config.skr04-update-3804.introduction">2.15.1. Einführung</a></span></dt><dt><span class="sect2"><a href="ch02s15.html#config.skr04-update-3804.create-chart">2.15.2. Konto 3804 manuell anlegen</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch02s16.html">2.16. Verhalten des Bilanzberichts</a></span></dt><dt><span class="sect1"><a href="ch02s17.html">2.17. Einstellungen pro Mandant</a></span></dt><dt><span class="sect1"><a href="ch02s18.html">2.18. kivitendo ERP verwenden</a></span></dt></dl></dd><dt><span class="chapter"><a href="ch03.html">3. Features und Funktionen</a></span></dt><dd><dl><dt><span class="sect1"><a href="ch03.html#features.periodic-invoices">3.1. Wiederkehrende Rechnungen</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch03.html#features.periodic-invoices.introduction">3.1.1. Einführung</a></span></dt><dt><span class="sect2"><a href="ch03.html#features.periodic-invoices.configuration">3.1.2. Konfiguration</a></span></dt><dt><span class="sect2"><a href="ch03.html#features.periodic-invoices.variables">3.1.3. Spezielle Variablen</a></span></dt><dt><span class="sect2"><a href="ch03.html#features.periodic-invoices.reports">3.1.4. Auflisten</a></span></dt><dt><span class="sect2"><a href="ch03.html#features.periodic-invoices.task-server">3.1.5. Erzeugung der eigentlichen Rechnungen</a></span></dt><dt><span class="sect2"><a href="ch03.html#features.periodic-invoices.create-for-current-month">3.1.6. 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 |
5 | 5 |
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 |
6 |
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><dt><span class="sect1"><a href="ch03s04.html">3.4. Mandantenkonfiguration Lager</a></span></dt></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#d0e5420">4.1.1. Wie sehen globale Variablen in Perl aus?</a></span></dt><dt><span class="sect2"><a href="ch04.html#d0e5521">4.1.2. Warum sind globale Variablen ein Problem?</a></span></dt><dt><span class="sect2"><a href="ch04.html#d0e5554">4.1.3. Kanonische globale Variablen</a></span></dt><dt><span class="sect2"><a href="ch04.html#d0e5942">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></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.format-perl-files">4.3.3. Format von in Perl geschriebenen Datenbankupgradescripten</a></span></dt><dt><span class="sect2"><a href="ch04s03.html#db-upgrade-files.dbupgrade-tool">4.3.4. 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.character-set">4.4.2. Character set</a></span></dt><dt><span class="sect2"><a href="ch04s04.html#translations-languages.file-structure">4.4.3. File structure</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch04s05.html">4.5. Die kivitendo-Test-Suite</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch04s05.html#devel.testsuite.intro">4.5.1. Einführung</a></span></dt><dt><span class="sect2"><a href="ch04s05.html#devel.testsuite.prerequisites">4.5.2. Voraussetzungen</a></span></dt><dt><span class="sect2"><a href="ch04s05.html#devel.testsuite.execution">4.5.3.
|
|
6 |
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><dt><span class="sect1"><a href="ch03s04.html">3.4. Mandantenkonfiguration Lager</a></span></dt></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#d0e5616">4.1.1. Wie sehen globale Variablen in Perl aus?</a></span></dt><dt><span class="sect2"><a href="ch04.html#d0e5717">4.1.2. Warum sind globale Variablen ein Problem?</a></span></dt><dt><span class="sect2"><a href="ch04.html#d0e5750">4.1.3. Kanonische globale Variablen</a></span></dt><dt><span class="sect2"><a href="ch04.html#d0e6138">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></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.format-perl-files">4.3.3. Format von in Perl geschriebenen Datenbankupgradescripten</a></span></dt><dt><span class="sect2"><a href="ch04s03.html#db-upgrade-files.dbupgrade-tool">4.3.4. 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.character-set">4.4.2. Character set</a></span></dt><dt><span class="sect2"><a href="ch04s04.html#translations-languages.file-structure">4.4.3. File structure</a></span></dt></dl></dd><dt><span class="sect1"><a href="ch04s05.html">4.5. Die kivitendo-Test-Suite</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch04s05.html#devel.testsuite.intro">4.5.1. Einführung</a></span></dt><dt><span class="sect2"><a href="ch04s05.html#devel.testsuite.prerequisites">4.5.2. Voraussetzungen</a></span></dt><dt><span class="sect2"><a href="ch04s05.html#devel.testsuite.execution">4.5.3.
|
|
7 | 7 |
Existierende Tests ausführen |
8 | 8 |
</a></span></dt><dt><span class="sect2"><a href="ch04s05.html#devel.testsuite.meaning_of_scripts">4.5.4. |
9 | 9 |
Bedeutung der verschiedenen Test-Scripte |
Auch abrufbar als: Unified diff
Dokumentation für individuelle Variablenformatierung bei wiederkehrenden Rechnungen