Merge branch 'master' of vc.linet-services.de:public/lx-office-erp
[kivitendo-erp.git] / doc / dokumentenvorlagen-und-variablen.html
index 4e048dc..e1dac11 100644 (file)
@@ -48,6 +48,12 @@ td {
   <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&auml;ndern</a></li>
 
@@ -125,9 +131,6 @@ td {
 
     <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>
 
@@ -192,6 +195,68 @@ td {
    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>&lt;%variablenname%&gt;</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>&lt;%variablenname FLAG1 FLAG2%&gt;</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">&lt;%quototal NOFORMAT%&gt;</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 &lt;%if cp_phone2%&gt;&lt;%cp_phone2%&gt;&lt;%else%&gt;&lt;%cp_phone1%&gt;&lt;%end%&gt;</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&auml;ndern</a></h2>
 
@@ -291,6 +356,23 @@ td {
   </table>
  </p>
 
+ <a name="#dateinamen_erweitert"<h3>Sprache, Drucker und E-Mail</h3>
+
+ <p>Angeforderte Sprache und Druckerk&uuml;rzel in den Dateinamen mit eingearbeitet. So wird aus der Vorlage <code>sales_order.ext</code> bei Sprache <code>de</code> und Druckerk&uuml;rzel <code>lpr2</code> der Vorlagenname <code>sales_order_de_lpr2.ext</code>. Zus&auml;tzlich k&ouml;nnen f&uuml;r E-Mails andere Vorlagen erstellt werden, diese bekommen dann noch das K&uuml;rzel <code>_email</code>, der vollst&auml;ndige Vorlagenname w&auml;re dann <code>sales_order_email_de_lpr2.ext</code>. In allen F&auml;llen kann eine Standarddatei <code>default.ext</code> hinterlegt werden. Diese wird verwendet, wenn keine der anderen Varianten gefunden wird.</p>
+
+ <p>Die vollst&auml;ndige Suchreihenfolge f&uuml;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&ouml;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&uuml;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>
@@ -298,6 +380,57 @@ td {
  <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&uuml;ber welche Variante einer Vorlage der Benutzer angefragt hat. Sie sind n&uuml;tzlich f&uuml;r Vorlagenautoren, die aus einer zentralen Layoutvorlage die einzelnen Formulare einbinden m&ouml;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&auml;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&uuml;rzel der verwendeten Sprache, identisch mit dem K&uuml;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&uuml;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&uuml;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&uuml;r Bildschirm, <code>email</code> f&uuml;r E-Mmail (triggert das <code>_email</code> K&uuml;rzel im Dateinamen), <code>printer</code> f&uuml;r Drucker, und <code>queue</code> f&uuml;r Warteschlange enthalten.</td>
+   </tr>
+   <tr>
+    <td><code>template_meta.printer.description</code></td>
+    <td>Beschreibung des ausgew&auml;hlten Druckers</td>
+   </tr>
+   <tr>
+    <td><code>template_meta.printer.template_code</code></td>
+    <td>Vorlagen&uuml;rzel des ausgew&auml;hlten Druckers, identisch mit dem K&uuml;rzel das im Dateinamen verwendetet wird.</td>
+   </tr>
+  </table>
+ </p>
+
  <h3><a name="allgemein_stammdaten">
    Stammdaten von Kunden und Lieferanten:</a></h3>
 
@@ -493,7 +626,7 @@ td {
    </tr>
    <tr>
     <td><code>ustid</code></td>
-    <td>Usatzsteuer-Identifikationsnummer</td>
+    <td>Umsatzsteuer-Identifikationsnummer</td>
    </tr>
    <tr>
    <tr>
@@ -757,12 +890,6 @@ 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&uuml;glich bereits bezahlter Posten)</td>
@@ -1097,6 +1224,11 @@ td {
     <td><code>dn_transdate</code></td>
     <td>Rechnungsdatum</td>
    </tr>
+   <tr>
+    <td><code>dn_curr</code></td>
+    <td>W&auml;hrung, in der die Rechnung erstellt wurde. (Die Rechnungsbetr&auml;ge
+      sind aber immer in der Hauptw&auml;hrung)</td>
+   </tr>
   </table>
  </p>
 
@@ -1461,47 +1593,6 @@ td {
   zwischen <code>&lt;%foreach%&gt;</code> und <code>&lt;%end%&gt;</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>&lt;%pagebreak ZpZ ZeS ZzS%&gt;<br>
-   ...<br>
-   &lt;%end%&gt;</code></p>
-
- <p>Dieser Block existiert nur in LaTeX-Vorlagen.</p>
-
- <p>Dieser Block legt das Verhalten beim manuellen Einf&uuml;gen eines
-  Seitenumbruchs fest. Normalerweise bricht LaTeX die Seiten selber um. Beim
-  Rechnungsdruck ist das oft nicht gew&uuml;nscht, oder man m&ouml;chte im
-  Falle eines Seitenumbruchs den &Uuml;bertrag etc. mit ausgeben. Deswegen
-  versucht der Parser, manuell Seitenumbr&uuml;che einzuf&uuml;gen,
-  w&auml;hrend er einen <code>foreach</code>-Block auswertet, weil hier die
-  manuellen Seitenumbr&uuml;che erforderlich werden. Daf&uuml;r ben&ouml;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&uuml;ssen.</p>
-
- <p>&Uuml;blicherweise wird in diesem Block zuerst die aktuelle Tabelle
-  geschlossen, eventuell Text eingef&uuml;gt (z.B. "Fortsetzung auf der
-  n&auml;chsten Seite"), dann ein Seitenumbruch erzwungen, eventuell Text
-  eingef&uuml;gt (z.B. "&Uuml;bertrag von der vorherigen Seite:
-  &lt;%sumcarriedforward%&gt; EUR") und die Tabelle wieder ge&ouml;ffnet.</p>
-
- <p>Wird kein manueller Seitenumbruch gew&uuml;scht, so kann dieser Block
-  komplett entfallen.</p>
-
  <small><a href="dokumentenvorlagen-und-variablen.html#inhaltsverzeichnis">
    zum Inhaltsverzeichnis</a></small><br>
  <hr>
@@ -1544,19 +1635,23 @@ td {
     <td><code>&lt;pagebreak&gt;</code></td>
     <td>Erzwingt einen Seitenumbruch (siehe unten).</td>
    </tr>
+   <tr>
+    <td><code>&lt;bullet&gt;</code></td>
+    <td>Erzeugt einen ausgef&uuml;llten Kreis f&uuml;r Aufz&auml;hlungen (&bull;) (siehe unten).</td>
+   </tr>
   </table>
  </p>
 
  <p>Eine Besonderheit ist der Befehl <code>&lt;pagebreak&gt;</code>,
   der nur in LaTeX-Vorlagen funktioniert und in anderen Vorlagen
-  einfach gel&ouml;scht wird. Dieser erzwingt unabh&auml;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&ouml;scht wird. Dieser erzwingt einen Seitenumbruch nach
+  der aktuellen Rechnungsposition. Dementsprechend funktioniert er nur
+  innerhalb von
   <code>&lt;%foreach...%&gt;</code>-Schleifen. Weiterhin ben&ouml;tigt
   er kein Endtag.</p>
 
+ <p>Auch <code>&lt;bullet&gt;</code> funktioniert momentan auch nur in Latex-Vorlagen.</p>
+
  <small><a href="dokumentenvorlagen-und-variablen.html#inhaltsverzeichnis">
    zum Inhaltsverzeichnis</a></small><br>
  <hr>