3 <title>LaTeX-Vorlagen und verfügbare Variablen</title>
4 <style type="text/css">
8 background-color: #b0ecff;
9 border: 1px solid blue;
16 background-color: #fae8b8;
17 border: 1px solid #be5303;
18 border-collapse: collapse;
22 border: 1px solid #be5303;
32 <h1>LaTeX-Vorlagen und verfügbare Variablen</h1>
34 <p>geschrieben von <a href="mailto:m.bunkus@linet-services.de">Moritz
35 Bunkus</a>. Version: $Id$ </p>
39 <h2><a name="inhaltsverzeichnis">Inhaltsverzeichnis</a></h2>
42 <li><a href="latex-template-variablen.html#inhaltsverzeichnis">
43 Inhaltsverzeichnis</a></li>
45 <li><a href="latex-template-variablen.html#einfuehrung">Einführung</a>
48 <li><a href="latex-template-variablen.html#zuordnung_dateinamen">
49 Zuordnung von Dateinamen zu den Funktionen</a></li>
51 <li><a href="latex-template-variablen.html#allgemeine_variablen">
52 Allgemeine Variablen, die in allen Vorlagen vorhanden sind</a><br>
55 <li><a href="latex-template-variablen.html#allgemein_stammdaten">
56 Stammdaten von Kunden und Lieferanten</a></li>
58 <li><a href="latex-template-variablen.html#allgemein_verkaeufer">
59 Informationen über den Verkäufer</a></li>
61 <li><a href="latex-template-variablen.html#allgemein_steuern">
62 Variablen für jede Steuer</a></li>
66 <li><a href="latex-template-variablen.html#invoice">
67 Variablen in Rechnungen</a>
70 <li><a href="latex-template-variablen.html#invoice_allgemein">
71 Allgemeine Variablen</a></li>
73 <li><a href="latex-template-variablen.html#invoice_posten">
74 Variablen für jeden Posten auf der Rechnung</a></li>
76 <li><a href="latex-template-variablen.html#invoice_zahlungen">
77 Variablen für die Zahlungseingänge</a></li>
81 <li><a href="latex-template-variablen.html#anderevorlagen">
82 Variablen in anderen Vorlagen</a></li>
84 <li><a href="latex-template-variablen.html#bloecke">
85 Blöcke, bedingte Anweisungen und Schleifen</a>
88 <li><a href="latex-template-variablen.html#bloecke_include">
89 Die <code>include</code>-Anweisung</a></li>
91 <li><a href="latex-template-variablen.html#bloecke_ifnot">
92 Der <code>if not</code>-Block</a></li>
94 <li><a href="latex-template-variablen.html#bloecke_if">
95 Der <code>if</code>-Block</a></li>
97 <li><a href="latex-template-variablen.html#bloecke_foreach">
98 Die <code>foreach</code>-Schleife</a></li>
100 <li><a href="latex-template-variablen.html#bloecke_pagebreak">
101 Der <code>pagebreak</code>-Block</a></li>
109 <h2><a name="einfuehrung">Einführung</a></h2>
111 <p>Dies ist eine Auflistung der Standard-LaTeX-Vorlagen und aller zur
112 Bearbeitung verfügbare Variablen. Eine Variable wird in einer Vorlage
113 durch ihren Inhalt ersetzt, wenn sie in der Form
114 <code><%variablenname%></code> verwendet wird.</p>
116 <p>Insgesamt sind technisch gesehen eine ganze Menge mehr Variablen
117 verfügbar als hier aufgelistet werden. Die meisten davon können
118 allerdings innerhalb einer solchen Vorlage nicht sinnvoll verwendet
119 werden. Wenn eine Auflistung dieser Variablen gewollt ist, so kann diese wie
120 folgt erhalten werden:</p>
124 <li><code>SL/Form.pm</code> öffnen und am Anfang die Zeile
125 <pre>"use Data::Dumper;"</pre> einfügen.</li>
127 <li>In <code>Form.pm</code> die Funktion <code>parse_template</code>
128 suchen und hier die Zeile <pre>print(STDERR Dumper($self));</pre>
131 <li>Einmal per Browser die gewünschte Vorlage "benutzen", z.B. ein PDF
132 für eine Rechnung erzeugen.</li>
134 <li>Im <code>error.log</code> vom Apache steht die Ausgabe der Variablen
135 <code>$self</code> in der Form <code>'key' => 'value',</code>. Alle
136 <code>key</code>s sind verfügbar.</li>
140 <small><a href="latex-template-variablen.html#inhaltsverzeichnis">
141 zum Inhaltsverzeichnis</a></small><br>
144 <h2><a name="zuordnung_dateinamen">
145 Zuordnung von den Dateinamen zu den Funktionen</a></h2>
147 <p>Diese kurze Auflistung zeigt, welche Vorlage bei welcher Funktion
151 <li><code>bin_list.tex</code> -- Lagerliste</li>
152 <li><code>check.tex</code> -- ?</li>
153 <li><code>invoice.tex</code> -- Rechnung</li>
154 <li><code>packing_list.tex</code> -- Verpackungsliste</li>
155 <li><code>pick_list.tex</code> -- Sammelliste</li>
156 <li><code>purcharse_order.tex</code> -- Bestellung an Lieferanten</li>
157 <li><code>request_quotation.tex</code> -- Anfrage an Lieferanten</li>
158 <li><code>sales_order.tex</code> -- Bestellung</li>
159 <li><code>sales_quotation.tex</code> -- Angebot an Kunden</li>
162 <small><a href="latex-template-variablen.html#inhaltsverzeichnis">
163 zum Inhaltsverzeichnis</a></small><br>
166 <h2><a name="allgemeine_variablen">
167 Allgemeine Variablen, die in allen Vorlagen vorhanden sind</a></h2>
169 <h3><a name="allgemein_stammdaten">
170 Stammdaten von Kunden und Lieferanten:</a></h3>
174 <tr><th>Variablenname</th><th>Bedeutung</th></tr>
176 <td><code>account_number</code></td>
180 <td><code>bank</code></td>
181 <td>Name der Bank</td>
184 <td><code>bank_code</code></td>
185 <td>Bankleitzahl</td>
188 <td><code>business</code></td>
192 <td><code>city</code></td>
196 <td><code>contact</code></td>
200 <td><code>country</code></td>
204 <td><code>cp_email</code></td>
205 <td>Email des Ansprechpartners</td>
208 <td><code>cp_givenname</code></td>
209 <td>Vorname des Ansprechpartners</td>
212 <td><code>cp_greeting</code></td>
213 <td>Anrede des Ansprechpartners</td>
216 <td><code>cp_name</code></td>
217 <td>Name des Ansprechpartners</td>
220 <td><code>cp_phone1</code></td>
221 <td>Telefonnummer 1 des Ansprechpartners</td>
224 <td><code>cp_phone2</code></td>
225 <td>Telefonnummer 2 des Ansprechpartners</td>
228 <td><code>cp_title</code></td>
229 <td>Titel des Ansprechpartners</td>
232 <td><code>creditlimit</code></td>
236 <td><code>customernumber</code></td>
237 <td>Kundennummer; nur für Kunden</td>
240 <td><code>customernotes</code></td>
241 <td>Bemerkungen beim Kunden; nur für Kunden</td>
244 <td><code>discount</code></td>
248 <td><code>email</code></td>
249 <td>Emailadresse</td>
252 <td><code>fax</code></td>
256 <td><code>homepage</code></td>
260 <td><code>language</code></td>
264 <td><code>name</code></td>
268 <td><code>phone</code></td>
269 <td>Telefonnummer</td>
272 <td><code>shiptocity</code></td>
273 <td>Stadt (Lieferadresse)
274 <a href="latex-template-variablen.html#anmerkung_shipto">*</a></td>
277 <td><code>shiptocontact</code></td>
278 <td>Kontakt (Lieferadresse)
279 <a href="latex-template-variablen.html#anmerkung_shipto">*</a></td>
282 <td><code>shiptocountry</code></td>
283 <td>Land (Lieferadresse)
284 <a href="latex-template-variablen.html#anmerkung_shipto">*</a></td>
287 <td><code>shiptoemail</code></td>
288 <td>Email (Lieferadresse)
289 <a href="latex-template-variablen.html#anmerkung_shipto">*</a></td>
292 <td><code>shiptofax</code></td>
293 <td>Fax (Lieferadresse)
294 <a href="latex-template-variablen.html#anmerkung_shipto">*</a></td>
297 <td><code>shiptoname</code></td>
298 <td>Firmenname (Lieferadresse)
299 <a href="latex-template-variablen.html#anmerkung_shipto">*</a></td>
302 <td><code>shiptophone</code></td>
303 <td>Telefonnummer (Lieferadresse)
304 <a href="latex-template-variablen.html#anmerkung_shipto">*</a></td>
307 <td><code>shiptostreet</code></td>
308 <td>Straße und Hausnummer (Lieferadresse)
309 <a href="latex-template-variablen.html#anmerkung_shipto">*</a></td>
312 <td><code>shiptozipcode</code></td>
313 <td>Postleitzahl (Lieferadresse)
314 <a href="latex-template-variablen.html#anmerkung_shipto">*</a></td>
317 <td><code>street</code></td>
318 <td>Straße und Hausnummer</td>
321 <td><code>taxnumber</code></td>
322 <td>Steuernummer</td>
325 <td><code>terms</code></td>
326 <td>Zahlungsziel</td>
329 <td><code>vendoremail</code></td>
330 <td>Email des Lieferanten; nur für Lieferanten</td>
333 <td><code>vendorfax</code></td>
334 <td>Faxnummer des Lieferanten; nur für Lieferanten</td>
337 <td><code>vendornotes</code></td>
338 <td>Bemerkungen beim Lieferanten; nur für Lieferanten</td>
341 <td><code>vendornumber</code></td>
342 <td>Lieferantennummer; nur für Lieferanten</td>
345 <td><code>vendorphone</code></td>
346 <td>Telefonnummer des Lieferanten; nur für Lieferanten</td>
349 <td><code>zipcode</code></td>
350 <td>Postleitzahl</td>
355 <p><a name="anmerkung_shipto"><em>Anmerkung</em></a>: Sind die
356 <code>shipto*</code>-Felder in den Stammdaten nicht eingetragen, so haben
357 die Variablen <code>shipto*</code> den gleichen Wert wie die die
358 entsprechenden Variablen der Lieferdaten. Das bedeutet, dass sich einige
359 <code>shipto*</code>-Variablen so nicht in den Stammdaten wiederfinden
360 sondern schlicht Kopien der Lieferdatenvariablen sind
361 (z.B. <code>shiptocontact</code>).</p>
363 <h3><a name="allgemein_verkaeufer">
364 Informationen über den Verkäufer:</a></h3>
368 <tr><th>Variablenname</th><th>Bedeutung</th></tr>
370 <td><code>employee_email</code></td>
374 <td><code>employee_fax</code></td>
378 <td><code>employee_name</code></td>
382 <td><code>employee_signature</code></td>
386 <td><code>employee_tel</code></td>
387 <td>Telefonnummer</td>
392 <h3><a name="allgemein_steuern">
393 Variablen für die einzelnen Steuern:</a></h3>
397 <tr><th>Variablenname</th><th>Bedeutung</th></tr>
399 <td><code>tax</code></td>
403 <td><code>taxbase</code></td>
404 <td>zu versteuernder Betrag</td>
407 <td><code>taxdescription</code></td>
408 <td>Name der Steuer</td>
411 <td><code>taxrate</code></td>
417 <small><a href="latex-template-variablen.html#inhaltsverzeichnis">
418 zum Inhaltsverzeichnis</a></small><br>
421 <h2><a name="invoice">Variablen in Rechnungen</a></h2>
423 <h3><a name="invoice_allgemein">Allgemeine Variablen:</a></h3>
427 <tr><th>Variablenname</th><th>Bedeutung</th></tr>
429 <td><code>creditremaining</code></td>
430 <td>Verbleibender Kredit</td>
433 <td><code>currency</code></td>
437 <td><code>cusordnumber</code></td>
438 <td>Bestellnummer beim Kunden</td>
441 <td><code>duedate</code></td>
442 <td>Fälligkeitsdatum</td>
445 <td><code>intnotes</code></td>
446 <td>Interne Bemerkungen</td>
449 <td><code>invdate</code></td>
450 <td>Rechnungsdatum</td>
453 <td><code>invnumber</code></td>
454 <td>Rechnungsnummer</td>
457 <td><code>invtotal</code></td>
458 <td>gesamter Rechnungsbetrag</td>
461 <td><code>notes</code></td>
462 <td>Bemerkungen der Rechnung</td>
465 <td><code>ordnumber</code></td>
466 <td>Auftragsnummer</td>
469 <td><code>quonumber</code></td>
470 <td>Angebotsnummer</td>
473 <td><code>shippingdate</code></td>
477 <td><code>shippingpoint</code></td>
481 <td><code>shipvia</code></td>
482 <td>Transportmittel</td>
485 <td><code>subtotal</code></td>
486 <td>Zwischensumme aller Posten ohne Steuern</td>
489 <td><code>sumcarriedforward</code></td>
490 <td>Zwischensumme aller bisher ausgegebenen Posten. Sollte nur in einem
491 <a href="latex-template-variablen.html#bloecke_pagebreak">
492 <code>pagebreak</code></a>-Block verwendet werden.</td>
495 <td><code>total</code></td>
496 <td>Restsumme der Rechnung (Summe abzüglich bereits bezahlter Posten)</td>
501 <h3><a name="invoice_posten">
502 Variablen für jeden Posten auf der Rechnung:</a></h3>
506 <tr><th>Variablenname</th><th>Bedeutung</th></tr>
508 <td><code>assembly</code></td>
512 <td><code>bin</code></td>
516 <td><code>deliverydate</code></td>
520 <td><code>description</code></td>
521 <td>Artikelbeschreibung</td>
524 <td><code>linetotal</code></td>
525 <td>Zeilensumme (Anzahl * Einzelpreis)</td>
528 <td><code>listprice</code></td>
532 <td><code>netprice</code></td>
536 <td><code>number</code></td>
537 <td>Artikelnummer</td>
540 <td><code>partnotes</code></td>
541 <td>Die beim Artikel gespeicherten Bemerkungen</td>
544 <td><code>partsgroup</code></td>
548 <td><code>projectnumber</code></td>
549 <td>Projektnummer</td>
552 <td><code>qty</code></td>
556 <td><code>runningnumber</code></td>
557 <td>Position auf der Rechnung (1, 2, 3...)</td>
560 <td><code>sellprice</code></td>
561 <td>Verkaufspreis</td>
564 <td><code>serialnumber</code></td>
565 <td>Seriennummer</td>
568 <td><code>unit</code></td>
574 <h3><a name="invoice_zahlungen">
575 Variablen für die einzelnen Zahlungseingänge:</a></h3>
579 <tr><th>Variablenname</th><th>Bedeutung</th></tr>
581 <td><code>datepaid</code></td>
585 <td><code>memo</code></td>
589 <td><code>paid</code></td>
593 <td><code>source</code></td>
597 <td><code>exchangerate</code></td>
601 <td><code>forex</code></td>
607 <small><a href="latex-template-variablen.html#inhaltsverzeichnis">
608 zum Inhaltsverzeichnis</a></small><br>
611 <h2><a name="anderevorlagen">
612 Variablen in anderen Vorlagen</a></h2>
614 <p>Die Variablen in anderen Vorlagen sind ähnlich wie in der
615 Rechnung. Allerdings heißen die Variablen, die mit <code>inv</code>
616 beginnen, jetzt anders. Bei den Angeboten fangen sie mit <code>quo</code>
617 für "quotation" an: <code>quodate</code> für Angebotsdatum
618 etc. Bei Bestellungen wiederum fangen sie mit <code>ord</code> für
619 "order" an: <code>ordnumber</code> für Bestellnummer etc.</p>
621 <p>Manche Variablen sind in anderen Vorlagen hingegen gar nicht vorhanden wie
622 z.B. die für bereits verbuchte Zahlungseingänge. Dies sind
623 Variablen, die vom Geschäftsablauf her in der entsprechenden Vorlage
624 keine Bedeutung haben oder noch nicht belegt sein können.</p>
626 <small><a href="latex-template-variablen.html#inhaltsverzeichnis">
627 zum Inhaltsverzeichnis</a></small><br>
630 <h2><a name="bloecke">
631 Blöcke, bedingte Anweisungen und Schleifen</a></h2>
633 <p>Der Parser kennt neben den Variablen einige weitere Konstrukte, die
634 gesondert behandelt werden. Diese sind wie Variablennamen in spezieller
635 Weise markiert: <code><%anweisung%></code></p>
637 <p><b>Achtung: Blöcke können momentan nicht verschachtelt
638 werden.</b> Das bedeutet, dass innerhalb einer
639 <code><%foreach%></code>-Schleife keine
640 <code><%if%></code>-Abfragen verwendet werden können. Dieses
641 kann man aber mit LaTeX-Bordmitteln selber nachgebildet werden. Dazu muss
642 im Vorspann das Paket <code>ifthen</code> eingebunden werden. Das Konstrukt
643 selber sieht dann wie folgt aus:</p>
645 <p class="blue"><code>\ifthenelse{\equal{<%variable%>}{}}{}{Dieser
646 Text erscheint nur, wenn <%variable%> nicht leer ist.}</code></p>
648 <h3><a name="bloecke_include">Die <code>include</code>-Anweisung</a></h3>
650 <p class="blue"><code><%include dateiname.ext%></code></p>
652 <p>Fügt den Inhalt einer Datei an der entsprechenden Stelle ein. Der
653 eingefügte Text wird ganz normal durch den Parser behandelt und kann
654 Variablen und Blöcke enthalten.</p>
656 <h3><a name="bloecke_ifnot">Der <code>if not</code>-Block</a></h3>
658 <p class="blue"><code><%if not variablenname%><br>
660 <%end if></code></p>
662 <p>Eine normale "if-not-then"-Bedingung. Die Zeilen zwischen dem "if not" und
663 dem "end" werden nur ausgegeben, wenn die Variable "variablenname" nicht
664 gesetzt oder gleich 0 ist.</p>
666 <h3><a name="bloecke_if">Der <code>if</code>-Block</a></h3>
668 <p class="blue"><code><%if variablenname%><br>
670 <%end if></code></p>
672 <p>Eine normale "if-then"-Bedingung. Die Zeilen zwischen dem "if" und dem
673 "end" werden nur ausgegeben, wenn die Variable "variablenname" gesetzt und
676 <h3><a name="bloecke_foreach">Die <code>foreach</code>-Schleife</a></h3>
678 <p class="blue"><code><%foreach variablenname%><br>
680 <%end foreach></code></p>
682 <p>Fügt die Zeilen zwischen den beiden Anweisungen so oft ein, wie das
683 Perl-Array der Variablen "variablenname" Elemente enthät. Dieses
684 Konstrukt wird zur Ausgabe der einzelnen Posten einer Rechnung / eines
685 Angebots sowie zur Ausgabe der Steuern benutzt. In jedem Durchlauf werden
686 die <a href="latex-template-variablen.html#invoice_posten">zeilenbezogenen
687 Variablen</a> jeweils auf den Wert für die aktuelle Position
690 <p>Die Syntax sieht normalerweise wie folgt aus:</p>
692 <p class="blue"><code><%foreach number%><br>
693 Position: <%runningnumber%><br>
694 Anzahl: <%qty%><br>
695 Artikelnummer: <%number%><br>
696 Beschreibung: <%description%><br>
698 <%end foreach></code></p>
700 <h3><a name="bloecke_pagebreak">Der <code>pagebreak</code>-Block</a></h3>
702 <p class="blue"><code><%pagebreak ZpZ ZeS ZzS%><br>
704 <%end pagebreak%></code></p>
706 <p>Dieser Block legt das Verhalten beim manuellen Einfügen eines
707 Seitenumbruchs fest. Normalerweise bricht LaTeX die Seiten selber um. Beim
708 Rechnungsdruck ist das oft nicht gewünscht, oder man möchte im
709 Falle eines Seitenumbruchs den Übertrag etc. mit ausgeben. Deswegen
710 versucht der Parser, manuell Seitenumbrüche einzufügen,
711 während er einen <code>foreach</code>-Block auswertet, weil hier die
712 manuellen Seitenumbrüche erforderlich werden. Dafür benötigt
713 der Parser aber drei Informationen:</p>
717 <li>Wieviele Zeichen passen bei der Variablen "description" pro Posten
718 in eine Zeile? Das ist der Parameter "ZpZ" (Zeichen pro Zeile).</li>
719 <li>Wieviele Zeilen/Posten passen auf die erste Seite? Das
720 ist der Parameter "ZeS" (Zeilen erste Seite).</li>
721 <li>Wieviele Zeilen/Posten passen auf die zweite und alle nachfolgenden
722 Seiten? Das ist der Parameter "ZzS" (Zeilen zweite Seite).</li>
726 <p>Diese Parameter sind drei Zahlen, die manuell durch Verwendung von langen
727 Warenbezeichnungen und Rechnungen mit vielen Posten bestimmt werden
730 <p>Üblicherweise wird in diesem Block zuerst die aktuelle Tabelle
731 geschlossen, eventuell Text eingefügt (z.B. "Fortsetzung auf der
732 nächsten Seite"), dann ein Seitenumbruch erzwungen, eventuell Text
733 eingefügt (z.B. "Übertrag von der vorherigen Seite:
734 <%sumcarriedforward%> EUR") und die Tabelle wieder geöffnet.</p>
736 <p>Wird kein manueller Seitenumbruch gewüscht, so kann dieser Block
737 komplett entfallen.</p>
739 <small><a href="latex-template-variablen.html#inhaltsverzeichnis">
740 zum Inhaltsverzeichnis</a></small><br>