<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#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>
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>
</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>
</tr>
<tr>
<td><code>ustid</code></td>
- <td>Usatzsteuer-Identifikationsnummer</td>
+ <td>Umsatzsteuer-Identifikationsnummer</td>
</tr>
<tr>
<tr>
<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><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>
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
+ 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>
<hr>