<li><a href="dokumentenvorlagen-und-variablen.html#zuordnung_dateinamen">
Zuordnung von Dateinamen zu den Funktionen</a></li>
+ <li><a href="#variablen_ausgeben">Variablen ausgeben</a>
+ </li>
+
+ <li><a href="#verwendung_in_druckbefehlen">Verwendung in Druckbefehlen</a>
+ </li>
+
<li><a href="dokumentenvorlagen-und-variablen.html#tag_style">
Anfang und Ende der Tags verändern</a></li>
<li><a href="dokumentenvorlagen-und-variablen.html#anderevorlagen_quotations">Angebote und Preisanfragen</a></li>
<li><a href="dokumentenvorlagen-und-variablen.html#anderevorlagen_orders">Auftragsbestätigungen und Lieferantenaufträge</a></li>
<li><a href="dokumentenvorlagen-und-variablen.html#anderevorlagen_delivery_orders">Lieferscheine (Verkauf und Einkauf)</a></li>
+ <li><a href="dokumentenvorlagen-und-variablen.html#anderevorlagen_statement">Sammelrechnung</a></li>
</ol>
</li>
Blöcke, bedingte Anweisungen und Schleifen</a>
<ol>
- <li><a href="dokumentenvorlagen-und-variablen.html#bloecke_ifnot">
- Der <code>if not</code>-Block</a></li>
-
<li><a href="dokumentenvorlagen-und-variablen.html#bloecke_if">
Der <code>if</code>-Block</a></li>
<li><a href="dokumentenvorlagen-und-variablen.html#bloecke_foreach">
Die <code>foreach</code>-Schleife</a></li>
-
- <li><a href="dokumentenvorlagen-und-variablen.html#bloecke_pagebreak">
- Der <code>pagebreak</code>-Block</a></li>
</ol>
</li>
verändern</a>.
</p>
+ <p>Einige Zahlenwerte werden auch in unformatierter Form zur Verfügung
+ gestellt (also z.B. 35 statt 35,00 oder 12.3 statt 12,30). Der Dezimaltrenner
+ ist dabei also immer ein Punkt unabhaengig vom eingestellten Zahlenformat.
+ Diese Variabelen kann man mit der Erweiterung _nofmt (für no-format) aufrufen
+ (also z.B. netprice = 12,30 -- netprice_nofmt = 12.3). Variabeln die zusätzlich
+ unformatiert zur Verfügung stehen sind unten als variable[_nofmt] gelistet.
+ Die Eckigen Klammern weisen also auf eine optionale Verwändung der Erweiterung hin.
+ </p>
+
<p>Früher wurde hier nur über LaTeX gesprochen. Inzwischen
unterstützt Lx-Office aber auch OpenDocument-Vorlagen. Sofern
es nicht ausdrücklich eingeschränkt wird, gilt das im
zum Inhaltsverzeichnis</a></small><br>
<hr>
+ <h2><a name="variablen_ausgeben">Variablen ausgeben</a></h2>
+
+ <p>Um eine Variable auszugeben, müssen sie einfach nur zwischen die
+ Tags geschrieben werden, also
+ z.B. <code><%variablenname%></code>.</p>
+
+ <p>
+ Optional kann man auch mit Leerzeichen getrennte Flags angeben, die
+ man aber nur selten brauchen wird. Die Syntax sieht also so
+ aus: <code><%variablenname FLAG1 FLAG2%></code>. Momentan werden
+ die folgenden Flags unterstützt:
+ </p>
+
+ <ul>
+ <li>
+ <code>NOFORMAT</code> gilt nur für Zahlenwerte und gibt den Wert
+ ohne Formatierung, also ohne Tausendertrennzeichen mit mit einem
+ Punkt als Dezimaltrennzeichen aus. Nützlich z.B., wenn damit in der
+ Vorlage z.B. von LaTeX gerechnet werden soll.
+ </li>
+
+ <li>
+ <code>NOESCAPE</code> unterdrückt das Escapen von Sonderzeichen für
+ die Vorlagensprache. Wenn also in einer Variablen bereits gültiger
+ LaTeX-Code steht und dieser von LaTeX auch ausgewertet und nicht
+ wortwörtlich angezeigt werden soll, so ist dieses Flag sinnvoll.
+ </li>
+ </ul>
+
+ <p>
+ Beispiel: <code class="blue"><%quototal NOFORMAT%></code>
+ </p>
+
+ <small><a href="dokumentenvorlagen-und-variablen.html#inhaltsverzeichnis">
+ zum Inhaltsverzeichnis</a></small><br>
+ <hr>
+
+ <h2><a name="verwendung_in_druckbefehlen">Verwendung in Druckbefehlen</a></h2>
+
+ <p>
+ In der Admininstration können Drucker definiert werden. Auch im dort
+ eingebbaren Druckbefehl können die hier aufgelisteten Variablen und
+ Kontrollstrukturen verwendet werden. Ihr Inhalt wird dabei nach den
+ Regeln der gängigen Shells formatiert, sodass Sonderzeichen
+ wie <code>`...`</code> nicht zu unerwünschtem Verhalten führen.
+ </p>
+
+ <p>
+ Dies erlaubt z.B. die Definition eines Faxes als Druckerbefehl, für
+ das die Telefonnummer eines Ansprechpartners als Teil der
+ Kommandozeile verwendet wird. Für ein fiktives Kommando könnte das
+ z.B. wie folgt aussehen:
+ </p>
+
+ <p>
+ <code>send_fax --number <%if cp_phone2%><%cp_phone2%><%else%><%cp_phone1%><%end%></code>
+ </p>
+
+ <small><a href="dokumentenvorlagen-und-variablen.html#inhaltsverzeichnis">
+ zum Inhaltsverzeichnis</a></small><br>
+ <hr>
+
<h2><a name="tag_style">
Anfang und Ende der Tags verändern</a></h2>
äquivalente Beispiel für HTML-Dokumentenvorlagen sieht so
aus:</p>
- <p><code><!-- config: tag-stye=($ $)></code></p>
+ <p><code><!-- config: tag-style=($ $) --></code></p>
<small><a href="dokumentenvorlagen-und-variablen.html#inhaltsverzeichnis">
zum Inhaltsverzeichnis</a></small><br>
</tr>
<tr>
<td><code>packing_list.ext</code></td>
- <td>Verpackungsliste</td>
+ <td>Packliste</td>
</tr>
<tr>
<td><code>pick_list.ext</code></td>
</table>
</p>
+ <a name="#dateinamen_erweitert"<h3>Sprache, Drucker und E-Mail</h3>
+
+ <p>Angeforderte Sprache und Druckerkürzel in den Dateinamen mit eingearbeitet. So wird aus der Vorlage <code>sales_order.ext</code> bei Sprache <code>de</code> und Druckerkürzel <code>lpr2</code> der Vorlagenname <code>sales_order_de_lpr2.ext</code>. Zusätzlich können für E-Mails andere Vorlagen erstellt werden, diese bekommen dann noch das Kürzel <code>_email</code>, der vollständige Vorlagenname wäre dann <code>sales_order_email_de_lpr2.ext</code>. In allen Fällen kann eine Standarddatei <code>default.ext</code> hinterlegt werden. Diese wird verwendet, wenn keine der anderen Varianten gefunden wird.</p>
+
+ <p>Die vollständige Suchreihenfolge für einen Verkaufsauftrag mit der Sprache "de" und dem Drucker "lpr2", der per E-Mail im Format PDF verschickt wird, ist:</p>
+ <p>
+ <table border='1'>
+ <tr><th>Reihenfolge der möglichen Vorlagennamen</th></tr>
+ <tr><td><code>sales_order_email_de_lpr2.tex</code></td></tr>
+ <tr><td><code>sales_order_de_lpr2.tex</code></td></tr>
+ <tr><td><code>sales_order.tex</code></td></tr>
+ <tr><td><code>default.tex</code></td></tr>
+ </table>
+ </p>
+
+ <p>Die kurzen Varianten dieser Vorlagentitel müssen dann entweder Standardwerte anzeigen, oder die angeforderten Werte selbst auswerten, siehe dazu <a href="#allgemein_meta">Metadaten in Vorlagen</a></p>
+
<small><a href="dokumentenvorlagen-und-variablen.html#inhaltsverzeichnis">
zum Inhaltsverzeichnis</a></small><br>
<hr>
<h2><a name="allgemeine_variablen">
Allgemeine Variablen, die in allen Vorlagen vorhanden sind</a></h2>
+ <h3><a name="allgemein_meta">
+ Metainformationen zur angeforderten Vorlage:</a></h3>
+
+ <p>Diese Variablen liefern Informationen darüber welche Variante einer Vorlage der Benutzer angefragt hat. Sie sind nützlich für Vorlagenautoren, die aus einer zentralen Layoutvorlage die einzelnen Formulare einbinden möchten.</p>
+
+ <p>
+ <table border="1">
+ <tr><th>Variablenname</th><th>Bedeutung</th></tr>
+ <tr>
+ <td><code>template_meta.formname</code></td>
+ <td>Basisname der Vorlage. Identisch mit der <a href="#zuordnung_dateinamen">Zurordnung zu den Dateinamen</a> ohne die Erweiterung. Ein Verkaufsauftrag enthält hier <code>sales_order</code>.</td>
+ </tr>
+ <tr>
+ <td><code>template_meta.language.description</code></td>
+ <td>Beschreibung der verwendeten Sprache</td>
+ </tr>
+ <tr>
+ <td><code>template_meta.language.template_code</code></td>
+ <td>Vorlagenürzel der verwendeten Sprache, identisch mit dem Kürzel das im Dateinamen verwendetet wird.</td>
+ </tr>
+ <tr>
+ <td><code>template_meta.language.output_numberformat</code></td>
+ <td>Zahlenformat der verwendeten Sprache in der Form "1.000,00". <em>Experimentell!</em>. Nur interessant für Vorlagen die mit unformatierten Werten arbeiten.</td>
+ </tr>
+ <tr>
+ <td><code>template_meta.language.output_dateformat</code></td>
+ <td>Datumsformat der verwendeten Sprache in der Form "dd.mm.yyyy". <em>Experimentell!</em>. Nur interessant für Vorlagen die mit unformatierten Werten arbeiten.</td>
+ </tr>
+ <tr>
+ <td><code>template_meta.format</code></td>
+ <td>Das angeforderte Format. Kann im Moment die Werte <code>pdf</code>, <code>postscript</code>, <code>html</code>, <code>opendocument</code>, <code>opendocument_pdf</code> und <code>excel</code> enthalten.</td>
+ </tr>
+ <tr>
+ <td><code>template_meta.extension</code></td>
+ <td>Dateierweiterung, wie im Dateinamen. Wird aus <code>format</code> entschieden.</td>
+ </tr>
+ <tr>
+ <td><code>template_meta.media</code></td>
+ <td>Ausgabemedium. Kann zur Zeit die Werte <code>screen</code> für Bildschirm, <code>email</code> für E-Mmail (triggert das <code>_email</code> Kürzel im Dateinamen), <code>printer</code> für Drucker, und <code>queue</code> für Warteschlange enthalten.</td>
+ </tr>
+ <tr>
+ <td><code>template_meta.printer.description</code></td>
+ <td>Beschreibung des ausgewählten Druckers</td>
+ </tr>
+ <tr>
+ <td><code>template_meta.printer.template_code</code></td>
+ <td>Vorlagenürzel des ausgewählten Druckers, identisch mit dem Kürzel das im Dateinamen verwendetet wird.</td>
+ </tr>
+ </table>
+ </p>
+
<h3><a name="allgemein_stammdaten">
Stammdaten von Kunden und Lieferanten:</a></h3>
<td><code>name</code></td>
<td>Firmenname</td>
</tr>
+ <tr>
+ <td><code>payment_description</code></td>
+ <td>Name der Zahlart</td>
+ </tr>
<tr>
<td><code>payment_terms</code></td>
<td>Zahlungskonditionen</td>
<td><code>taxnumber</code></td>
<td>Steuernummer</td>
</tr>
+ <tr>
+ <td><code>ustid</code></td>
+ <td>Umsatzsteuer-Identifikationsnummer</td>
+ </tr>
+ <tr>
<tr>
<td><code>vendoremail</code></td>
<td>Email des Lieferanten; nur für Lieferanten</td>
</p>
<h3><a name="allgemein_verkaeufer">
- Informationen über den Verkäfer (nur bei Verkaufsmasken):</a></h3>
+ Informationen über den Verkäufer (nur bei Verkaufsmasken):</a></h3>
<p>
<table border="1">
<td><code>globalprojectnumber</code></td>
<td>Projektnummer des ganzen Beleges</td>
</tr>
+ <tr>
+ <td><code>globalprojectdescription</code></td>
+ <td>Projekbeschreibung des ganzen Beleges</td>
+ </tr>
<tr>
<td><code>intnotes</code></td>
<td>Interne Bemerkungen</td>
<td><code>ordnumber</code></td>
<td>Auftragsnummer, wenn die Rechnung aus einem Auftrag erstellt wurde</td>
</tr>
+ <tr>
+ <td><code>payment_description</code></td>
+ <td>Name der Zahlart</td>
+ </tr>
<tr>
<td><code>payment_terms</code></td>
<td>Zahlungskonditionen</td>
<td>Transportmittel</td>
</tr>
<tr>
- <td><code>subtotal</code></td>
+ <td><code>subtotal[_nofmt]</code></td>
<td>Zwischensumme aller Posten ohne Steuern</td>
</tr>
- <tr>
- <td><code>sumcarriedforward</code></td>
- <td>Zwischensumme aller bisher ausgegebenen Posten. Sollte nur in einem
- <a href="dokumentenvorlagen-und-variablen.html#bloecke_pagebreak">
- <code>pagebreak</code></a>-Block verwendet werden.</td>
- </tr>
<tr>
<td><code>total</code></td>
<td>Restsumme der Rechnung (Summe abzüglich bereits bezahlter Posten)</td>
<td>Artikelbeschreibung</td>
</tr>
<tr>
- <td><code>discount</code></td>
+ <td><code>discount[_nofmt]</code></td>
<td>Rabatt als Betrag</td>
</tr>
<tr>
- <td><code>discount_sub</code></td>
+ <td><code>discount_sub[_nofmt]</code></td>
<td>Zwischensumme mit Rabatt</td>
</tr>
<tr>
<td>Grafik</td>
</tr>
<tr>
- <td><code>linetotal</code></td>
+ <td><code>linetotal[_nofmt]</code></td>
<td>Zeilensumme (Anzahl * Einzelpreis)</td>
</tr>
<tr>
<td>Mikrofilm</td>
</tr>
<tr>
- <td><code>netprice</code></td>
+ <td><code>netprice[_nofmt]</code></td>
<td>Nettopreis</td>
</tr>
<tr>
- <td><code>nodiscount_linetotal</code></td>
+ <td><code>nodiscount_linetotal[_nofmt]</code></td>
<td>Zeilensumme ohne Rabatt</td>
</tr>
<tr>
- <td><code>nodiscount_sub</code></td>
+ <td><code>nodiscount_sub[_nofmt]</code></td>
<td>Zwischensumme ohne Rabatt</td>
</tr>
<tr>
<td>Projektnummer</td>
</tr>
<tr>
- <td><code>qty</code></td>
+ <td><code>projectdescription</code></td>
+ <td>Projektbeschreibung</td>
+ </tr>
+ <tr>
+ <td><code>qty[_nofmt]</code></td>
<td>Anzahl</td>
</tr>
<tr>
<td>Position auf der Rechnung (1, 2, 3...)</td>
</tr>
<tr>
- <td><code>sellprice</code></td>
+ <td><code>sellprice[_nofmt]</code></td>
<td>Verkaufspreis</td>
</tr>
<tr>
<td><code>serialnumber</code></td>
<td>Seriennummer</td>
</tr>
+ <tr>
+ <td><code>tax_rate</code></td>
+ <td>Steuersatz</td>
+ </tr>
<tr>
<td><code>transdate_oe</code></td>
<td>Auftragsdatum des Originalauftrags, wenn die Rechnung aus einem Sammelauftrag erstellt wurde</td>
<td><code>dunning_duedate</code></td>
<td>Fälligkeitsdatum für diese Mahhnung</td>
</tr>
+ <tr>
+ <td><code>dunning_id</code></td>
+ <td>Mahnungsnummer</td>
+ </tr>
<tr>
<td><code>fee</code></td>
<td>Kummulative Mahngebühren</td>
<td><code>dn_transdate</code></td>
<td>Rechnungsdatum</td>
</tr>
+ <tr>
+ <td><code>dn_curr</code></td>
+ <td>Währung, in der die Rechnung erstellt wurde. (Die Rechnungsbeträge
+ sind aber immer in der Hauptwährung)</td>
+ </tr>
</table>
</p>
<p>
<table border="1">
<tr><th>Variablenname</th><th>Bedeutung</th></tr>
+ <tr>
+ <td><code>cusordnumber</code></td>
+ <td>Bestellnummer des Kunden (im Verkauf) bzw. Bestellnummer des Lieferanten (im Einkauf)</td>
+ </tr>
<tr>
<td><code>donumber</code></td>
<td>Lieferscheinnummer</td>
</table>
</p>
+ <p>Für jede Position eines Lieferscheines gibt es ein Unterarray mit
+ den Informationen darüber, von welchem Lager und Lagerplatz aus die
+ Waren verschickt wurden (Verkaufslieferscheine) bzw. auf welchen
+ Lagerplatz sie eingelagert wurden. Diese müssen mittels
+ einer <code>foreach</code>-Schleife ausgegeben werden. Diese
+ Variablen sind:</p>
+
+
<p>Für jede Position eines Lieferscheines gibt es ein Unterarray mit
den Informationen darüber, von welchem Lager und Lagerplatz aus die
Waren verschickt wurden (Verkaufslieferscheine) bzw. auf welchen
<td><code>si_chargenumber</code></td>
<td>Chargennummer</td>
</tr>
+ <tr>
+ <td><code>si_bestbefore</code></td>
+ <td>Mindesthaltbarkeit</td>
+ </tr>
<tr>
<td><code>si_number</code></td>
<td>Artikelnummer</td>
</table>
</p>
+ <h3><a name="anderevorlagen_statement">Sammelrechnung</a></h3>
+
+ <h3> Variablen für Sammelrechnung:</h3>
+ <p>
+ <table border="1">
+ <tr><th>Variablenname</th><th>Bedeutung</th></tr>
+ <tr>
+ <td><code>c0total</code></td>
+ <td>Gesamtbetrag aller Rechnungen mit Fälligkeit < 30 Tage</td>
+ </tr>
+ <tr>
+ <td><code>c30total</code></td>
+ <td>Gesamtbetrag aller Rechnungen mit Fälligkeit >= 30 und < 60 Tage</td>
+ </tr>
+ <tr>
+ <td><code>c60total</code></td>
+ <td>Gesamtbetrag aller Rechnungen mit Fälligkeit >= 60 und < 90 Tage</td>
+ </tr>
+ <tr>
+ <td><code>c90total</code></td>
+ <td>Gesamtbetrag aller Rechnungen mit Fälligkeit >= 90 Tage</td>
+ </tr>
+ <tr>
+ <td><code>total</code></td>
+ <td>Gesamtbetrag aller Rechnungen</td>
+ </tr>
+ </table>
+ </p>
+
+ <h3> Variablen für jede Rechnungsposition in Sammelrechnung:</h3>
+ <p>
+ <table border="1">
+ <tr><th>Variablenname</th><th>Bedeutung</th></tr>
+ <tr>
+ <td><code>invnumber</code></td>
+ <td>Rechnungsnummer</td>
+ </tr>
+ <tr>
+ <td><code>invdate</code></td>
+ <td>Rechnungsdatum</td>
+ </tr>
+ <tr>
+ <td><code>duedate</code></td>
+ <td>Fälligkeitsdatum</td>
+ </tr>
+ <tr>
+ <td><code>amount</code></td>
+ <td>Summe der Rechnung</td>
+ </tr>
+ <tr>
+ <td><code>open</code></td>
+ <td>Noch offener Betrag der Rechnung</td>
+ </tr>
+ <tr>
+ <td><code>c0</code></td>
+ <td>Noch offener Rechnungsbetrag mit Fälligkeit < 30 Tage</td>
+ </tr>
+ <tr>
+ <td><code>c30</code></td>
+ <td>Noch offener Rechnungsbetrag mit Fälligkeit >= 30 und < 60 Tage</td>
+ </tr>
+ <tr>
+ <td><code>c60</code></td>
+ <td>Noch offener Rechnungsbetrag mit Fälligkeit >= 60 und < 90 Tage</td>
+ </tr>
+ <tr>
+ <td><code>c90</code></td>
+ <td>Noch offener Rechnungsbetrag mit Fälligkeit >= 90 Tage</td>
+ </tr>
+ </table>
+ </p>
+
+
+
+
<small><a href="dokumentenvorlagen-und-variablen.html#inhaltsverzeichnis">
zum Inhaltsverzeichnis</a></small><br>
<hr>
<h2><a name="bloecke">
Blöcke, bedingte Anweisungen und Schleifen</a></h2>
- <p>Der Parser kennt neben den Variablen einige weitere Konstrukte, die
- gesondert behandelt werden. Diese sind wie Variablennamen in spezieller
- Weise markiert: <code><%anweisung%></code></p>
-
- <h3><a name="bloecke_ifnot">Der <code>if not</code>-Block</a></h3>
-
- <p class="blue"><code><%if not variablenname%><br>
- ...<br>
- <%end></code></p>
-
- <p>Eine normale "if-not-then"-Bedingung. Die Zeilen zwischen dem "if not" und
- dem "end" werden nur ausgegeben, wenn die Variable "variablenname" nicht
- gesetzt oder gleich 0 ist.</p>
+ <p>Der Parser kennt neben den Variablen einige weitere Konstrukte,
+ die gesondert behandelt werden. Diese sind wie Variablennamen in
+ spezieller Weise markiert: <code><%anweisung%>
+ ... <%end%></code></p>
+
+ <p>Anmerkung zum <code><%end%></code>: Der besseren
+ Verständlichkeit halber kann man nach dem <code>end</code> noch
+ beliebig weitere Wörter schreiben, um so zu markieren, welche
+ Anweisung (z.B. <code>if</code> oder <code>foreach</code>) damit
+ abgeschlossen wird.</p>
+
+ <p>Beispiel: Lautet der Beginn eines Blockes
+ z.B. <code class="blue"><%if type ==
+ "sales_quotation"%></code>, so könnte er mit
+ <code class="blue"><%end%></code> genauso abgeschlossen werden
+ wie mit
+ <code class="blue"><%end if%></code> oder auch
+ <code class="blue"><%end type ==
+ "sales_quotation"%></code>.</p>
<h3><a name="bloecke_if">Der <code>if</code>-Block</a></h3>
<p class="blue"><code><%if variablenname%><br>
...<br>
- <%end></code></p>
-
- <p>Eine normale "if-then"-Bedingung. Die Zeilen zwischen dem "if" und dem
- "end" werden nur ausgegeben, wenn die Variable "variablenname" gesetzt und
- ungleich 0 ist.</p>
+ <%end%></code></p>
+
+ <p>Eine normale "if-then"-Bedingung. Die Zeilen zwischen
+ dem "if" und dem "end" werden nur ausgegeben,
+ wenn die Variable "variablenname" gesetzt und ungleich 0
+ ist.</p>
+
+ <p>Die Bedingung kann auch negiert werden, indem das Wort
+ "not" nach dem "if" verwendet
+ wird. Beispiel: <code class="blue"><%if not
+ cp_greeting%></code></p>
+
+ <p>Zusätzlich zu dem einfachen Test, ob eine Variable gesetzt ist
+ oder nicht, bietet dieser Block auch die Möglichkeit, den Inhalt
+ einer Variablen mit einer festen Zeichenkette oder einer anderen
+ Variablen zu vergleichen. Ob der Vergleich mit einer Zeichenkette
+ oder einer anderen Variablen vorgenommen wird, hängt davon ab, ob
+ die rechte Seite des Vergleichsoperators in Anführungszeichen
+ gesetzt wird (Vergleich mit Zeichenkette) oder nicht (Vergleich mit
+ anderer Variablen). Zwei Beispiele, die beide Vergleiche zeigen:</p>
+
+ <p><code class="blue"><%if var1 == "Wert"%></code>
+ testet die Variable "var1" auf Übereinstimmung mit der
+ Zeichenkette "Wert". Mittels "!=" anstelle von
+ "==" würde auf Ungleichheit getestet.</p>
+
+ <p><code class="blue"><%if var1 == var2%></code> testet die
+ Variable "var1" auf Übereinstimmung mit der Variablen
+ "var2". Mittels "!=" anstelle von "=="
+ würde auf Ungleichheit getestet.</p>
+
+ <p>Erfahrere Benutzer können neben der Tests auf (Un-)Gleichheit auch
+ Tests auf Übereinstimmung mit regulären Ausdrücken ohne
+ Berücksichtung der Groß- und Kleinschreibung durchführen. Dazu dient
+ dieselbe Syntax wie oben nur mit "=~" und "!~"
+ als Vergleichsoperatoren.</p>
+
+ <p>Beispiel für einen Test, ob die Variable "intnotes"
+ (interne Bemerkungen) das Wort "schwierig" enthält:
+ <code class="blue"><%if intnotes =~
+ "schwierig"%></code></p>
<h3><a name="bloecke_foreach">Die <code>foreach</code>-Schleife</a></h3>
<p class="blue"><code><%foreach variablenname%><br>
...<br>
- <%end></code></p>
+ <%end%></code></p>
<p>Fügt die Zeilen zwischen den beiden Anweisungen so oft ein, wie das
Perl-Array der Variablen "variablenname" Elemente enthät. Dieses
Artikelnummer: <%number%><br>
Beschreibung: <%description%><br>
...<br>
- <%end></code></p>
+ <%end%></code></p>
<p>Besonderheit in OpenDocument-Vorlagen: Tritt ein
- <code><foreach></code>-Block innerhalb einer Tabellenzelle
+ <code><%foreach%></code>-Block innerhalb einer Tabellenzelle
auf, so wird die komplette Tabellenzeile so oft wiederholt wie
notwendig. Tritt er außerhalb auf, so wird nur der Inhalt
- zwischen <code><foreach></code> und <code><end></code>
+ zwischen <code><%foreach%></code> und <code><%end%></code>
wiederholt, nicht aber die komplette Zeile, in der er steht.</p>
- <h3><a name="bloecke_pagebreak">Der <code>pagebreak</code>-Block</a></h3>
-
- <p class="blue"><code><%pagebreak ZpZ ZeS ZzS%><br>
- ...<br>
- <%end></code></p>
-
- <p>Dieser Block existiert nur in LaTeX-Vorlagen.</p>
-
- <p>Dieser Block legt das Verhalten beim manuellen Einfügen eines
- Seitenumbruchs fest. Normalerweise bricht LaTeX die Seiten selber um. Beim
- Rechnungsdruck ist das oft nicht gewünscht, oder man möchte im
- Falle eines Seitenumbruchs den Übertrag etc. mit ausgeben. Deswegen
- versucht der Parser, manuell Seitenumbrüche einzufügen,
- während er einen <code>foreach</code>-Block auswertet, weil hier die
- manuellen Seitenumbrüche erforderlich werden. Dafür benötigt
- der Parser aber drei Informationen:</p>
-
- <p>
- <ol>
- <li>Wieviele Zeichen passen bei der Variablen "description" pro Posten
- in eine Zeile? Das ist der Parameter "ZpZ" (Zeichen pro Zeile).</li>
- <li>Wieviele Zeilen/Posten passen auf die erste Seite? Das
- ist der Parameter "ZeS" (Zeilen erste Seite).</li>
- <li>Wieviele Zeilen/Posten passen auf die zweite und alle nachfolgenden
- Seiten? Das ist der Parameter "ZzS" (Zeilen zweite Seite).</li>
- </ol>
- </p>
-
- <p>Diese Parameter sind drei Zahlen, die manuell durch Verwendung von langen
- Warenbezeichnungen und Rechnungen mit vielen Posten bestimmt werden
- müssen.</p>
-
- <p>Üblicherweise wird in diesem Block zuerst die aktuelle Tabelle
- geschlossen, eventuell Text eingefügt (z.B. "Fortsetzung auf der
- nächsten Seite"), dann ein Seitenumbruch erzwungen, eventuell Text
- eingefügt (z.B. "Übertrag von der vorherigen Seite:
- <%sumcarriedforward%> EUR") und die Tabelle wieder geöffnet.</p>
-
- <p>Wird kein manueller Seitenumbruch gewüscht, so kann dieser Block
- komplett entfallen.</p>
-
<small><a href="dokumentenvorlagen-und-variablen.html#inhaltsverzeichnis">
zum Inhaltsverzeichnis</a></small><br>
<hr>
<td><code><pagebreak></code></td>
<td>Erzwingt einen Seitenumbruch (siehe unten).</td>
</tr>
+ <tr>
+ <td><code><bullet></code></td>
+ <td>Erzeugt einen ausgefüllten Kreis für Aufzählungen (•) (siehe unten).</td>
+ </tr>
</table>
</p>
<p>Eine Besonderheit ist der Befehl <code><pagebreak></code>,
der nur in LaTeX-Vorlagen funktioniert und in anderen Vorlagen
- einfach gelöscht wird. Dieser erzwingt unabhängig von der
- im <a
- href="dokumentenvorlagen-und-variablen.html#bloecke_pagebreak">pagebreak-Block</a>
- voreingestellten Werte einen Seitenumbruch nach der aktuellen
- Rechnungsposition. Dementsprechend funktioniert er nur innerhalb von
- <code><foreach...></code>-Schleifen. Weiterhin benötigt er kein
- Endtag.</p>
+ einfach gelöscht wird. Dieser erzwingt einen Seitenumbruch nach
+ der aktuellen Rechnungsposition. Dementsprechend funktioniert er nur
+ innerhalb von
+ <code><%foreach...%></code>-Schleifen. Weiterhin benötigt
+ er kein Endtag.</p>
+
+ <p>Auch <code><bullet></code> funktioniert momentan auch nur in Latex-Vorlagen.</p>
<small><a href="dokumentenvorlagen-und-variablen.html#inhaltsverzeichnis">
zum Inhaltsverzeichnis</a></small><br>