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>
105 <li><a href="latex-template-variablen.html#markup">
106 Markup-Code, der innerhalb von Formularen zur Textformatierung verwendet
113 <h2><a name="einfuehrung">Einführung</a></h2>
115 <p>Dies ist eine Auflistung der Standard-LaTeX-Vorlagen und aller zur
116 Bearbeitung verfügbare Variablen. Eine Variable wird in einer Vorlage
117 durch ihren Inhalt ersetzt, wenn sie in der Form
118 <code><%variablenname%></code> verwendet wird.</p>
120 <p>Insgesamt sind technisch gesehen eine ganze Menge mehr Variablen
121 verfügbar als hier aufgelistet werden. Die meisten davon können
122 allerdings innerhalb einer solchen Vorlage nicht sinnvoll verwendet
123 werden. Wenn eine Auflistung dieser Variablen gewollt ist, so kann diese wie
124 folgt erhalten werden:</p>
128 <li><code>SL/Form.pm</code> öffnen und am Anfang die Zeile
129 <pre>"use Data::Dumper;"</pre> einfügen.</li>
131 <li>In <code>Form.pm</code> die Funktion <code>parse_template</code>
132 suchen und hier die Zeile <pre>print(STDERR Dumper($self));</pre>
135 <li>Einmal per Browser die gewünschte Vorlage "benutzen", z.B. ein PDF
136 für eine Rechnung erzeugen.</li>
138 <li>Im <code>error.log</code> vom Apache steht die Ausgabe der Variablen
139 <code>$self</code> in der Form <code>'key' => 'value',</code>. Alle
140 <code>key</code>s sind verfügbar.</li>
144 <small><a href="latex-template-variablen.html#inhaltsverzeichnis">
145 zum Inhaltsverzeichnis</a></small><br>
148 <h2><a name="zuordnung_dateinamen">
149 Zuordnung von den Dateinamen zu den Funktionen</a></h2>
151 <p>Diese kurze Auflistung zeigt, welche Vorlage bei welcher Funktion
155 <li><code>bin_list.tex</code> -- Lagerliste</li>
156 <li><code>check.tex</code> -- ?</li>
157 <li><code>invoice.tex</code> -- Rechnung</li>
158 <li><code>packing_list.tex</code> -- Verpackungsliste</li>
159 <li><code>pick_list.tex</code> -- Sammelliste</li>
160 <li><code>purcharse_order.tex</code> -- Bestellung an Lieferanten</li>
161 <li><code>request_quotation.tex</code> -- Anfrage an Lieferanten</li>
162 <li><code>sales_order.tex</code> -- Bestellung</li>
163 <li><code>sales_quotation.tex</code> -- Angebot an Kunden</li>
166 <small><a href="latex-template-variablen.html#inhaltsverzeichnis">
167 zum Inhaltsverzeichnis</a></small><br>
170 <h2><a name="allgemeine_variablen">
171 Allgemeine Variablen, die in allen Vorlagen vorhanden sind</a></h2>
173 <h3><a name="allgemein_stammdaten">
174 Stammdaten von Kunden und Lieferanten:</a></h3>
178 <tr><th>Variablenname</th><th>Bedeutung</th></tr>
180 <td><code>account_number</code></td>
184 <td><code>bank</code></td>
185 <td>Name der Bank</td>
188 <td><code>bank_code</code></td>
189 <td>Bankleitzahl</td>
192 <td><code>business</code></td>
196 <td><code>city</code></td>
200 <td><code>contact</code></td>
204 <td><code>country</code></td>
208 <td><code>cp_email</code></td>
209 <td>Email des Ansprechpartners</td>
212 <td><code>cp_givenname</code></td>
213 <td>Vorname des Ansprechpartners</td>
216 <td><code>cp_greeting</code></td>
217 <td>Anrede des Ansprechpartners</td>
220 <td><code>cp_name</code></td>
221 <td>Name des Ansprechpartners</td>
224 <td><code>cp_phone1</code></td>
225 <td>Telefonnummer 1 des Ansprechpartners</td>
228 <td><code>cp_phone2</code></td>
229 <td>Telefonnummer 2 des Ansprechpartners</td>
232 <td><code>cp_title</code></td>
233 <td>Titel des Ansprechpartners</td>
236 <td><code>creditlimit</code></td>
240 <td><code>customernumber</code></td>
241 <td>Kundennummer; nur für Kunden</td>
244 <td><code>customernotes</code></td>
245 <td>Bemerkungen beim Kunden; nur für Kunden</td>
248 <td><code>discount</code></td>
252 <td><code>email</code></td>
253 <td>Emailadresse</td>
256 <td><code>fax</code></td>
260 <td><code>homepage</code></td>
264 <td><code>language</code></td>
268 <td><code>name</code></td>
272 <td><code>phone</code></td>
273 <td>Telefonnummer</td>
276 <td><code>shiptocity</code></td>
277 <td>Stadt (Lieferadresse)
278 <a href="latex-template-variablen.html#anmerkung_shipto">*</a></td>
281 <td><code>shiptocontact</code></td>
282 <td>Kontakt (Lieferadresse)
283 <a href="latex-template-variablen.html#anmerkung_shipto">*</a></td>
286 <td><code>shiptocountry</code></td>
287 <td>Land (Lieferadresse)
288 <a href="latex-template-variablen.html#anmerkung_shipto">*</a></td>
291 <td><code>shiptoemail</code></td>
292 <td>Email (Lieferadresse)
293 <a href="latex-template-variablen.html#anmerkung_shipto">*</a></td>
296 <td><code>shiptofax</code></td>
297 <td>Fax (Lieferadresse)
298 <a href="latex-template-variablen.html#anmerkung_shipto">*</a></td>
301 <td><code>shiptoname</code></td>
302 <td>Firmenname (Lieferadresse)
303 <a href="latex-template-variablen.html#anmerkung_shipto">*</a></td>
306 <td><code>shiptophone</code></td>
307 <td>Telefonnummer (Lieferadresse)
308 <a href="latex-template-variablen.html#anmerkung_shipto">*</a></td>
311 <td><code>shiptostreet</code></td>
312 <td>Straße und Hausnummer (Lieferadresse)
313 <a href="latex-template-variablen.html#anmerkung_shipto">*</a></td>
316 <td><code>shiptozipcode</code></td>
317 <td>Postleitzahl (Lieferadresse)
318 <a href="latex-template-variablen.html#anmerkung_shipto">*</a></td>
321 <td><code>street</code></td>
322 <td>Straße und Hausnummer</td>
325 <td><code>taxnumber</code></td>
326 <td>Steuernummer</td>
329 <td><code>terms</code></td>
330 <td>Zahlungsziel</td>
333 <td><code>vendoremail</code></td>
334 <td>Email des Lieferanten; nur für Lieferanten</td>
337 <td><code>vendorfax</code></td>
338 <td>Faxnummer des Lieferanten; nur für Lieferanten</td>
341 <td><code>vendornotes</code></td>
342 <td>Bemerkungen beim Lieferanten; nur für Lieferanten</td>
345 <td><code>vendornumber</code></td>
346 <td>Lieferantennummer; nur für Lieferanten</td>
349 <td><code>v_customer_id</code></td>
350 <td>Kundennummer beim Lieferanten; nur für Lieferanten</td>
353 <td><code>vendorphone</code></td>
354 <td>Telefonnummer des Lieferanten; nur für Lieferanten</td>
357 <td><code>zipcode</code></td>
358 <td>Postleitzahl</td>
363 <p><a name="anmerkung_shipto"><em>Anmerkung</em></a>: Sind die
364 <code>shipto*</code>-Felder in den Stammdaten nicht eingetragen, so haben
365 die Variablen <code>shipto*</code> den gleichen Wert wie die die
366 entsprechenden Variablen der Lieferdaten. Das bedeutet, dass sich einige
367 <code>shipto*</code>-Variablen so nicht in den Stammdaten wiederfinden
368 sondern schlicht Kopien der Lieferdatenvariablen sind
369 (z.B. <code>shiptocontact</code>).</p>
371 <h3><a name="allgemein_verkaeufer">
372 Informationen über den Verkäufer:</a></h3>
376 <tr><th>Variablenname</th><th>Bedeutung</th></tr>
378 <td><code>employee_email</code></td>
382 <td><code>employee_fax</code></td>
386 <td><code>employee_name</code></td>
390 <td><code>employee_signature</code></td>
394 <td><code>employee_tel</code></td>
395 <td>Telefonnummer</td>
400 <h3><a name="allgemein_steuern">
401 Variablen für die einzelnen Steuern:</a></h3>
405 <tr><th>Variablenname</th><th>Bedeutung</th></tr>
407 <td><code>tax</code></td>
411 <td><code>taxbase</code></td>
412 <td>zu versteuernder Betrag</td>
415 <td><code>taxdescription</code></td>
416 <td>Name der Steuer</td>
419 <td><code>taxrate</code></td>
425 <small><a href="latex-template-variablen.html#inhaltsverzeichnis">
426 zum Inhaltsverzeichnis</a></small><br>
429 <h2><a name="invoice">Variablen in Rechnungen</a></h2>
431 <h3><a name="invoice_allgemein">Allgemeine Variablen:</a></h3>
435 <tr><th>Variablenname</th><th>Bedeutung</th></tr>
437 <td><code>creditremaining</code></td>
438 <td>Verbleibender Kredit</td>
441 <td><code>currency</code></td>
445 <td><code>cusordnumber</code></td>
446 <td>Bestellnummer beim Kunden</td>
449 <td><code>deliverydate</code></td>
453 <td><code>duedate</code></td>
454 <td>Fälligkeitsdatum</td>
457 <td><code>intnotes</code></td>
458 <td>Interne Bemerkungen</td>
461 <td><code>invdate</code></td>
462 <td>Rechnungsdatum</td>
465 <td><code>invnumber</code></td>
466 <td>Rechnungsnummer</td>
469 <td><code>invtotal</code></td>
470 <td>gesamter Rechnungsbetrag</td>
473 <td><code>notes</code></td>
474 <td>Bemerkungen der Rechnung</td>
477 <td><code>ordnumber</code></td>
478 <td>Auftragsnummer, wenn die Rechnung aus einem Auftrag erstellt wurde</td>
481 <td><code>quonumber</code></td>
482 <td>Angebotsnummer</td>
485 <td><code>shippingpoint</code></td>
489 <td><code>shipvia</code></td>
490 <td>Transportmittel</td>
493 <td><code>subtotal</code></td>
494 <td>Zwischensumme aller Posten ohne Steuern</td>
497 <td><code>sumcarriedforward</code></td>
498 <td>Zwischensumme aller bisher ausgegebenen Posten. Sollte nur in einem
499 <a href="latex-template-variablen.html#bloecke_pagebreak">
500 <code>pagebreak</code></a>-Block verwendet werden.</td>
503 <td><code>total</code></td>
504 <td>Restsumme der Rechnung (Summe abzüglich bereits bezahlter Posten)</td>
507 <td><code>transdate</code></td>
508 <td>Auftragsdatum wenn die Rechnung aus einem Auftrag erstellt wurde</td>
513 <h3><a name="invoice_posten">
514 Variablen für jeden Posten auf der Rechnung:</a></h3>
518 <tr><th>Variablenname</th><th>Bedeutung</th></tr>
520 <td><code>assembly</code></td>
524 <td><code>bin</code></td>
528 <td><code>deliverydate_oe</code></td>
532 <td><code>description</code></td>
533 <td>Artikelbeschreibung</td>
536 <td><code>discount</code></td>
537 <td>Rabatt als Betrag</td>
540 <td><code>linetotal</code></td>
541 <td>Zeilensumme (Anzahl * Einzelpreis)</td>
544 <td><code>listprice</code></td>
548 <td><code>netprice</code></td>
552 <td><code>number</code></td>
553 <td>Artikelnummer</td>
556 <td><code>ordnumber_oe</code></td>
557 <td>Auftragsnummer des Originalauftrags, wenn die Rechnung aus einem Sammelauftrag erstellt wurde</td>
560 <td><code>p_discount</code></td>
561 <td>Rabatt in Prozent</td>
563 <td><code>partnotes</code></td>
564 <td>Die beim Artikel gespeicherten Bemerkungen</td>
567 <td><code>partsgroup</code></td>
571 <td><code>projectnumber</code></td>
572 <td>Projektnummer</td>
575 <td><code>qty</code></td>
579 <td><code>runningnumber</code></td>
580 <td>Position auf der Rechnung (1, 2, 3...)</td>
583 <td><code>sellprice</code></td>
584 <td>Verkaufspreis</td>
587 <td><code>serialnumber</code></td>
588 <td>Seriennummer</td>
591 <td><code>transdate_oe</code></td>
592 <td>Auftragsdatum des Originalauftrags, wenn die Rechnung aus einem Sammelauftrag erstellt wurde</td>
595 <td><code>unit</code></td>
601 <h3><a name="invoice_zahlungen">
602 Variablen für die einzelnen Zahlungseingänge:</a></h3>
606 <tr><th>Variablenname</th><th>Bedeutung</th></tr>
608 <td><code>datepaid</code></td>
612 <td><code>memo</code></td>
616 <td><code>paid</code></td>
620 <td><code>source</code></td>
624 <td><code>exchangerate</code></td>
628 <td><code>forex</code></td>
634 <small><a href="latex-template-variablen.html#inhaltsverzeichnis">
635 zum Inhaltsverzeichnis</a></small><br>
638 <h2><a name="anderevorlagen">
639 Variablen in anderen Vorlagen</a></h2>
641 <p>Die Variablen in anderen Vorlagen sind ähnlich wie in der
642 Rechnung. Allerdings heißen die Variablen, die mit <code>inv</code>
643 beginnen, jetzt anders. Bei den Angeboten fangen sie mit <code>quo</code>
644 für "quotation" an: <code>quodate</code> für Angebotsdatum
645 etc. Bei Bestellungen wiederum fangen sie mit <code>ord</code> für
646 "order" an: <code>ordnumber</code> für Bestellnummer etc.</p>
648 <p>Manche Variablen sind in anderen Vorlagen hingegen gar nicht vorhanden wie
649 z.B. die für bereits verbuchte Zahlungseingänge. Dies sind
650 Variablen, die vom Geschäftsablauf her in der entsprechenden Vorlage
651 keine Bedeutung haben oder noch nicht belegt sein können.</p>
653 <small><a href="latex-template-variablen.html#inhaltsverzeichnis">
654 zum Inhaltsverzeichnis</a></small><br>
657 <h2><a name="bloecke">
658 Blöcke, bedingte Anweisungen und Schleifen</a></h2>
660 <p>Der Parser kennt neben den Variablen einige weitere Konstrukte, die
661 gesondert behandelt werden. Diese sind wie Variablennamen in spezieller
662 Weise markiert: <code><%anweisung%></code></p>
664 <p><b>Achtung: Blöcke können momentan nicht verschachtelt
665 werden.</b> Das bedeutet, dass innerhalb einer
666 <code><%foreach%></code>-Schleife keine
667 <code><%if%></code>-Abfragen verwendet werden können. Dieses
668 kann man aber mit LaTeX-Bordmitteln selber nachgebildet werden. Dazu muss
669 im Vorspann das Paket <code>ifthen</code> eingebunden werden. Das Konstrukt
670 selber sieht dann wie folgt aus:</p>
672 <p class="blue"><code>\ifthenelse{\equal{<%variable%>}{}}{}{Dieser
673 Text erscheint nur, wenn <%variable%> nicht leer ist.}</code></p>
675 <h3><a name="bloecke_include">Die <code>include</code>-Anweisung</a></h3>
677 <p class="blue"><code><%include dateiname.ext%></code></p>
679 <p>Fügt den Inhalt einer Datei an der entsprechenden Stelle ein. Der
680 eingefügte Text wird ganz normal durch den Parser behandelt und kann
681 Variablen und Blöcke enthalten.</p>
683 <h3><a name="bloecke_ifnot">Der <code>if not</code>-Block</a></h3>
685 <p class="blue"><code><%if not variablenname%><br>
687 <%end if></code></p>
689 <p>Eine normale "if-not-then"-Bedingung. Die Zeilen zwischen dem "if not" und
690 dem "end" werden nur ausgegeben, wenn die Variable "variablenname" nicht
691 gesetzt oder gleich 0 ist.</p>
693 <h3><a name="bloecke_if">Der <code>if</code>-Block</a></h3>
695 <p class="blue"><code><%if variablenname%><br>
697 <%end if></code></p>
699 <p>Eine normale "if-then"-Bedingung. Die Zeilen zwischen dem "if" und dem
700 "end" werden nur ausgegeben, wenn die Variable "variablenname" gesetzt und
703 <h3><a name="bloecke_foreach">Die <code>foreach</code>-Schleife</a></h3>
705 <p class="blue"><code><%foreach variablenname%><br>
707 <%end foreach></code></p>
709 <p>Fügt die Zeilen zwischen den beiden Anweisungen so oft ein, wie das
710 Perl-Array der Variablen "variablenname" Elemente enthät. Dieses
711 Konstrukt wird zur Ausgabe der einzelnen Posten einer Rechnung / eines
712 Angebots sowie zur Ausgabe der Steuern benutzt. In jedem Durchlauf werden
713 die <a href="latex-template-variablen.html#invoice_posten">zeilenbezogenen
714 Variablen</a> jeweils auf den Wert für die aktuelle Position
717 <p>Die Syntax sieht normalerweise wie folgt aus:</p>
719 <p class="blue"><code><%foreach number%><br>
720 Position: <%runningnumber%><br>
721 Anzahl: <%qty%><br>
722 Artikelnummer: <%number%><br>
723 Beschreibung: <%description%><br>
725 <%end foreach></code></p>
727 <h3><a name="bloecke_pagebreak">Der <code>pagebreak</code>-Block</a></h3>
729 <p class="blue"><code><%pagebreak ZpZ ZeS ZzS%><br>
731 <%end pagebreak%></code></p>
733 <p>Dieser Block legt das Verhalten beim manuellen Einfügen eines
734 Seitenumbruchs fest. Normalerweise bricht LaTeX die Seiten selber um. Beim
735 Rechnungsdruck ist das oft nicht gewünscht, oder man möchte im
736 Falle eines Seitenumbruchs den Übertrag etc. mit ausgeben. Deswegen
737 versucht der Parser, manuell Seitenumbrüche einzufügen,
738 während er einen <code>foreach</code>-Block auswertet, weil hier die
739 manuellen Seitenumbrüche erforderlich werden. Dafür benötigt
740 der Parser aber drei Informationen:</p>
744 <li>Wieviele Zeichen passen bei der Variablen "description" pro Posten
745 in eine Zeile? Das ist der Parameter "ZpZ" (Zeichen pro Zeile).</li>
746 <li>Wieviele Zeilen/Posten passen auf die erste Seite? Das
747 ist der Parameter "ZeS" (Zeilen erste Seite).</li>
748 <li>Wieviele Zeilen/Posten passen auf die zweite und alle nachfolgenden
749 Seiten? Das ist der Parameter "ZzS" (Zeilen zweite Seite).</li>
753 <p>Diese Parameter sind drei Zahlen, die manuell durch Verwendung von langen
754 Warenbezeichnungen und Rechnungen mit vielen Posten bestimmt werden
757 <p>Üblicherweise wird in diesem Block zuerst die aktuelle Tabelle
758 geschlossen, eventuell Text eingefügt (z.B. "Fortsetzung auf der
759 nächsten Seite"), dann ein Seitenumbruch erzwungen, eventuell Text
760 eingefügt (z.B. "Übertrag von der vorherigen Seite:
761 <%sumcarriedforward%> EUR") und die Tabelle wieder geöffnet.</p>
763 <p>Wird kein manueller Seitenumbruch gewüscht, so kann dieser Block
764 komplett entfallen.</p>
766 <small><a href="latex-template-variablen.html#inhaltsverzeichnis">
767 zum Inhaltsverzeichnis</a></small><br>
770 <h2><a name="markup">
771 Markup-Code, der innerhalb von Formularen zur Textformatierung
772 verwendet werden kann</a></h2>
774 <p>Wenn der Benutzer innhalb von Formularen in Lx-Office Text anders
775 formatiert haben möchte, so ist dies begrenzt möglich. Lx-Office
776 unterstützt die Textformatierung mit HTML-ähnlichen Tags. Der
777 Benutzer kann z.B. bei der Artikelbeschreibung auf einer Rechnung Teile des
778 Texts zwischen Start- und Endtags setzen. Dieser Teil wird dann automatisch
779 in Anweisungen für das ausgewählte Vorlagenformat (HTML oder
780 PDF über LaTeX) umgesetzt.</p>
782 <p>Die unterstützen Formatierungen sind:</p>
786 <tr><th>Formatierung</th><th>Auswirkung</th></tr>
788 <td><code><b>Text</b></code></td>
789 <td>Text wird in <b>fettdruck</b> gesetzt.</td>
792 <td><code><u>Text</u></code></td>
793 <td>Text wird <u>unterstrichen</u>.</td>
796 <td><code><s>Text</s></code></td>
797 <td>Text wird <s>durchgestrichen</s>. Diese Formatierung ist nicht bei der
798 Ausgabe als PDF über LaTeX verfügbar.</td>
801 <td><code><pagebreak></code></td>
802 <td>Erzwingt einen Seitenumbruch (siehe unten).</td>
807 <p>Eine Besonderheit ist der Befehl <code><pagebreak></code>. Dieser
808 erzwingt unabhängig von der im <a
809 href="latex-template-variablen.html#bloecke_pagebreak">pagebreak-Block</a>
810 voreingestellten Werte einen Seitenumbruch nach der aktuellen
811 Rechnungsposition. Dementsprechend funktioniert er nur innerhalb von
812 <code><foreach...></code>-Schleifen. Weiterhin benötigt er kein
815 <small><a href="latex-template-variablen.html#inhaltsverzeichnis">
816 zum Inhaltsverzeichnis</a></small><br>