unstable-Zweig als Kopie des "alten" trunks erstellt.
[kivitendo-erp.git] / doc / latex-template-variablen.html
1 <html>
2  <head>
3   <title>LaTeX-Vorlagen und verf&uuml;gbare Variablen</title>
4   <style type="text/css">
5   <!--
6 .blue { 
7            color: #000000;
8            background-color: #b0ecff;
9            border: 1px solid blue;
10            padding-left: 2px;
11            padding-right: 2px;
12            }
13
14 table {
15         color: #000000;
16         background-color: #fae8b8;
17         border: 1px solid #be5303;
18         border-collapse: collapse;
19         }
20
21 td { 
22      border: 1px solid #be5303;
23      padding: 3px;
24      }
25     -->
26   </style>
27
28  </head>
29
30 <body>
31
32  <h1>LaTeX-Vorlagen und verf&uuml;gbare Variablen</h1>
33
34  <p>geschrieben von <a href="mailto:m.bunkus@linet-services.de">Moritz
35    Bunkus</a>. Version: $Id$ </p>
36
37  <hr>
38
39  <h2><a name="inhaltsverzeichnis">Inhaltsverzeichnis</a></h2>
40
41  <ol>
42   <li><a href="latex-template-variablen.html#inhaltsverzeichnis">
43     Inhaltsverzeichnis</a></li>
44
45   <li><a href="latex-template-variablen.html#einfuehrung">Einf&uuml;hrung</a>
46   </li>
47
48   <li><a href="latex-template-variablen.html#zuordnung_dateinamen">
49     Zuordnung von Dateinamen zu den Funktionen</a></li>
50
51   <li><a href="latex-template-variablen.html#allgemeine_variablen">
52     Allgemeine Variablen, die in allen Vorlagen vorhanden sind</a><br>
53
54    <ol>
55     <li><a href="latex-template-variablen.html#allgemein_stammdaten">
56       Stammdaten von Kunden und Lieferanten</a></li>
57
58     <li><a href="latex-template-variablen.html#allgemein_verkaeufer">
59       Informationen &uuml;ber den Verk&auml;ufer</a></li>
60
61     <li><a href="latex-template-variablen.html#allgemein_steuern">
62       Variablen f&uuml;r jede Steuer</a></li>
63    </ol>
64   </li>
65
66   <li><a href="latex-template-variablen.html#invoice">
67     Variablen in Rechnungen</a>
68
69    <ol>
70     <li><a href="latex-template-variablen.html#invoice_allgemein">
71       Allgemeine Variablen</a></li>
72
73     <li><a href="latex-template-variablen.html#invoice_posten">
74       Variablen f&uuml;r jeden Posten auf der Rechnung</a></li>
75
76     <li><a href="latex-template-variablen.html#invoice_zahlungen">
77       Variablen f&uuml;r die Zahlungseing&auml;nge</a></li>
78    </ol>
79   </li>
80
81   <li><a href="latex-template-variablen.html#anderevorlagen">
82     Variablen in anderen Vorlagen</a></li>
83
84   <li><a href="latex-template-variablen.html#bloecke">
85     Bl&ouml;cke, bedingte Anweisungen und Schleifen</a>
86
87    <ol>
88     <li><a href="latex-template-variablen.html#bloecke_include">
89       Die <code>include</code>-Anweisung</a></li>
90
91     <li><a href="latex-template-variablen.html#bloecke_ifnot">
92       Der <code>if not</code>-Block</a></li>
93
94     <li><a href="latex-template-variablen.html#bloecke_if">
95       Der <code>if</code>-Block</a></li>
96
97     <li><a href="latex-template-variablen.html#bloecke_foreach">
98       Die <code>foreach</code>-Schleife</a></li>
99
100     <li><a href="latex-template-variablen.html#bloecke_pagebreak">
101       Der <code>pagebreak</code>-Block</a></li>
102    </ol>
103   </li>
104
105  </ol>
106
107  <hr>
108
109  <h2><a name="einfuehrung">Einf&uuml;hrung</a></h2>
110
111  <p>Dies ist eine Auflistung der Standard-LaTeX-Vorlagen und aller zur
112   Bearbeitung verf&uuml;gbare Variablen. Eine Variable wird in einer Vorlage
113   durch ihren Inhalt ersetzt, wenn sie in der Form
114   <code>&lt;%variablenname%&gt;</code> verwendet wird.</p>
115
116  <p>Insgesamt sind technisch gesehen eine ganze Menge mehr Variablen
117   verf&uuml;gbar als hier aufgelistet werden. Die meisten davon k&ouml;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>
121
122  <ol>
123
124   <li><code>SL/Form.pm</code> &ouml;ffnen und am Anfang die Zeile
125    <pre>"use Data::Dumper;"</pre> einf&uuml;gen.</li>
126
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>
129    einf&uuml;gen.</li>
130
131   <li>Einmal per Browser die gew&uuml;nschte Vorlage "benutzen", z.B. ein PDF
132    f&uuml;r eine Rechnung erzeugen.</li>
133
134   <li>Im <code>error.log</code> vom Apache steht die Ausgabe der Variablen
135    <code>$self</code> in der Form <code>'key' =&gt; 'value',</code>. Alle
136    <code>key</code>s sind verf&uuml;gbar.</li>
137
138  </ol>
139
140  <small><a href="latex-template-variablen.html#inhaltsverzeichnis">
141    zum Inhaltsverzeichnis</a></small><br>
142  <hr>
143
144  <h2><a name="zuordnung_dateinamen">
145    Zuordnung von den Dateinamen zu den Funktionen</a></h2>
146
147  <p>Diese kurze Auflistung zeigt, welche Vorlage bei welcher Funktion
148   ausgelesen wird:</p>
149
150  <ul>
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>
160  </ul>
161
162  <small><a href="latex-template-variablen.html#inhaltsverzeichnis">
163    zum Inhaltsverzeichnis</a></small><br>
164  <hr>
165
166  <h2><a name="allgemeine_variablen">
167    Allgemeine Variablen, die in allen Vorlagen vorhanden sind</a></h2>
168
169  <h3><a name="allgemein_stammdaten">
170    Stammdaten von Kunden und Lieferanten:</a></h3>
171
172  <p>
173   <table border="1">
174    <tr><th>Variablenname</th><th>Bedeutung</th></tr>
175    <tr>
176     <td><code>account_number</code></td>
177     <td>Kontonummer</td>
178    </tr>
179    <tr>
180     <td><code>bank</code></td>
181     <td>Name der Bank</td>
182    </tr>
183    <tr>
184     <td><code>bank_code</code></td>
185     <td>Bankleitzahl</td>
186    </tr>
187    <tr>
188     <td><code>business</code></td>
189     <td>Kundentyp</td>
190    </tr>
191    <tr>
192     <td><code>city</code></td>
193     <td>Stadt</td>
194    </tr>
195    <tr>
196     <td><code>contact</code></td>
197     <td>Kontakt</td>
198    </tr>
199    <tr>
200     <td><code>country</code></td>
201     <td>Land</td>
202    </tr>
203    <tr>
204     <td><code>cp_email</code></td>
205     <td>Email des Ansprechpartners</td>
206    </tr>
207    <tr>
208     <td><code>cp_givenname</code></td>
209     <td>Vorname des Ansprechpartners</td>
210    </tr>
211    <tr>
212     <td><code>cp_greeting</code></td>
213     <td>Anrede des Ansprechpartners</td>
214    </tr>
215    <tr>
216     <td><code>cp_name</code></td>
217     <td>Name des Ansprechpartners</td>
218    </tr>
219    <tr>
220     <td><code>cp_phone1</code></td>
221     <td>Telefonnummer 1 des Ansprechpartners</td>
222    </tr>
223    <tr>
224     <td><code>cp_phone2</code></td>
225     <td>Telefonnummer 2 des Ansprechpartners</td>
226    </tr>
227    <tr>
228     <td><code>cp_title</code></td>
229     <td>Titel des Ansprechpartners</td>
230    </tr>
231    <tr>
232     <td><code>creditlimit</code></td>
233     <td>Kreditlimit</td>
234    </tr>
235    <tr>
236     <td><code>customernumber</code></td>
237     <td>Kundennummer; nur f&uuml;r Kunden</td>
238    </tr>
239    <tr>
240     <td><code>customernotes</code></td>
241     <td>Bemerkungen beim Kunden; nur f&uuml;r Kunden</td>
242    </tr>
243    <tr>
244     <td><code>discount</code></td>
245     <td>Rabatt</td>
246    </tr>
247    <tr>
248     <td><code>email</code></td>
249     <td>Emailadresse</td>
250    </tr>
251    <tr>
252     <td><code>fax</code></td>
253     <td>Faxnummer</td>
254    </tr>
255    <tr>
256     <td><code>homepage</code></td>
257     <td>Homepage</td>
258    </tr>
259    <tr>
260     <td><code>language</code></td>
261     <td>Sprache</td>
262    </tr>
263    <tr>
264     <td><code>name</code></td>
265     <td>Firmenname</td>
266    </tr>
267    <tr>
268     <td><code>phone</code></td>
269     <td>Telefonnummer</td>
270    </tr>
271    <tr>
272     <td><code>shiptocity</code></td>
273     <td>Stadt (Lieferadresse)
274      <a href="latex-template-variablen.html#anmerkung_shipto">*</a></td>
275    </tr>
276    <tr>
277     <td><code>shiptocontact</code></td>
278     <td>Kontakt (Lieferadresse)
279      <a href="latex-template-variablen.html#anmerkung_shipto">*</a></td>
280    </tr>
281    <tr>
282     <td><code>shiptocountry</code></td>
283     <td>Land (Lieferadresse)
284      <a href="latex-template-variablen.html#anmerkung_shipto">*</a></td>
285    </tr>
286    <tr>
287     <td><code>shiptoemail</code></td>
288     <td>Email (Lieferadresse)
289      <a href="latex-template-variablen.html#anmerkung_shipto">*</a></td>
290    </tr>
291    <tr>
292     <td><code>shiptofax</code></td>
293     <td>Fax (Lieferadresse)
294      <a href="latex-template-variablen.html#anmerkung_shipto">*</a></td>
295    </tr>
296    <tr>
297     <td><code>shiptoname</code></td>
298     <td>Firmenname (Lieferadresse)
299      <a href="latex-template-variablen.html#anmerkung_shipto">*</a></td>
300    </tr>
301    <tr>
302     <td><code>shiptophone</code></td>
303     <td>Telefonnummer (Lieferadresse)
304      <a href="latex-template-variablen.html#anmerkung_shipto">*</a></td>
305    </tr>
306    <tr>
307     <td><code>shiptostreet</code></td>
308     <td>Straße und Hausnummer (Lieferadresse)
309      <a href="latex-template-variablen.html#anmerkung_shipto">*</a></td>
310    </tr>
311    <tr>
312     <td><code>shiptozipcode</code></td>
313     <td>Postleitzahl (Lieferadresse)
314      <a href="latex-template-variablen.html#anmerkung_shipto">*</a></td>
315    </tr>
316    <tr>
317     <td><code>street</code></td>
318     <td>Straße und Hausnummer</td>
319    </tr>
320    <tr>
321     <td><code>taxnumber</code></td>
322     <td>Steuernummer</td>
323    </tr>
324    <tr>
325     <td><code>terms</code></td>
326     <td>Zahlungsziel</td>
327    </tr>
328    <tr>
329     <td><code>vendoremail</code></td>
330     <td>Email des Lieferanten; nur f&uuml;r Lieferanten</td>
331    </tr>
332    <tr>
333     <td><code>vendorfax</code></td>
334     <td>Faxnummer des Lieferanten; nur f&uuml;r Lieferanten</td>
335    </tr>
336    <tr>
337     <td><code>vendornotes</code></td>
338     <td>Bemerkungen beim Lieferanten; nur f&uuml;r Lieferanten</td>
339    </tr>
340    <tr>
341     <td><code>vendornumber</code></td>
342     <td>Lieferantennummer; nur f&uuml;r Lieferanten</td>
343    </tr>
344    <tr>
345     <td><code>vendorphone</code></td>
346     <td>Telefonnummer des Lieferanten; nur f&uuml;r Lieferanten</td>
347    </tr>
348    <tr>
349     <td><code>zipcode</code></td>
350     <td>Postleitzahl</td>
351    </tr>
352   </table>
353  </p>
354
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>
362
363  <h3><a name="allgemein_verkaeufer">
364    Informationen &uuml;ber den Verkäufer:</a></h3>
365
366  <p>
367   <table border="1">
368    <tr><th>Variablenname</th><th>Bedeutung</th></tr>
369    <tr>
370     <td><code>employee_email</code></td>
371     <td>Email</td>
372    </tr>
373    <tr>
374     <td><code>employee_fax</code></td>
375     <td>Fax</td>
376    </tr>
377    <tr>
378     <td><code>employee_name</code></td>
379     <td>voller Name</td>
380    </tr>
381    <tr>
382     <td><code>employee_signature</code></td>
383     <td>Signatur</td>
384    </tr>
385    <tr>
386     <td><code>employee_tel</code></td>
387     <td>Telefonnummer</td>
388    </tr>
389   </table>
390  </p>
391
392  <h3><a name="allgemein_steuern">
393    Variablen f&uuml;r die einzelnen Steuern:</a></h3>
394
395  <p>
396   <table border="1">
397    <tr><th>Variablenname</th><th>Bedeutung</th></tr>
398    <tr>
399     <td><code>tax</code></td>
400     <td>Steuer</td>
401    </tr>
402    <tr>
403     <td><code>taxbase</code></td>
404     <td>zu versteuernder Betrag</td>
405    </tr>
406    <tr>
407     <td><code>taxdescription</code></td>
408     <td>Name der Steuer</td>
409    </tr>
410    <tr>
411     <td><code>taxrate</code></td>
412     <td>Steuersatz</td>
413    </tr>
414   </table>
415  </p>
416
417  <small><a href="latex-template-variablen.html#inhaltsverzeichnis">
418    zum Inhaltsverzeichnis</a></small><br>
419  <hr>
420
421  <h2><a name="invoice">Variablen in Rechnungen</a></h2>
422
423  <h3><a name="invoice_allgemein">Allgemeine Variablen:</a></h3>
424
425  <p>
426   <table border="1">
427    <tr><th>Variablenname</th><th>Bedeutung</th></tr>
428    <tr>
429     <td><code>creditremaining</code></td>
430     <td>Verbleibender Kredit</td>
431    </tr>
432    <tr>
433     <td><code>currency</code></td>
434     <td>Währung</td>
435    </tr>
436    <tr>
437     <td><code>cusordnumber</code></td>
438     <td>Bestellnummer beim Kunden</td>
439    </tr>
440    <tr>
441     <td><code>duedate</code></td>
442     <td>Fälligkeitsdatum</td>
443    </tr>
444    <tr>
445     <td><code>intnotes</code></td>
446     <td>Interne Bemerkungen</td>
447    </tr>
448    <tr>
449     <td><code>invdate</code></td>
450     <td>Rechnungsdatum</td>
451    </tr>
452    <tr>
453     <td><code>invnumber</code></td>
454     <td>Rechnungsnummer</td>
455    </tr>
456    <tr>
457     <td><code>invtotal</code></td>
458     <td>gesamter Rechnungsbetrag</td>
459    </tr>
460    <tr>
461     <td><code>notes</code></td>
462     <td>Bemerkungen der Rechnung</td>
463    </tr>
464    <tr>
465     <td><code>ordnumber</code></td>
466     <td>Auftragsnummer</td>
467    </tr>
468    <tr>
469     <td><code>quonumber</code></td>
470     <td>Angebotsnummer</td>
471    </tr>
472    <tr>
473     <td><code>shippingdate</code></td>
474     <td>Lieferdatum</td>
475    </tr>
476    <tr>
477     <td><code>shippingpoint</code></td>
478     <td>Versandort</td>
479    </tr>
480    <tr>
481     <td><code>shipvia</code></td>
482     <td>Transportmittel</td>
483    </tr>
484    <tr>
485     <td><code>subtotal</code></td>
486     <td>Zwischensumme aller Posten ohne Steuern</td>
487    </tr>
488    <tr>
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>
493    </tr>
494    <tr>
495     <td><code>total</code></td>
496     <td>Restsumme der Rechnung (Summe abz&uuml;glich bereits bezahlter Posten)</td>
497    </tr>
498   </table>
499  </p>
500
501  <h3><a name="invoice_posten">
502    Variablen f&uuml;r jeden Posten auf der Rechnung:</a></h3>
503
504  <p>
505   <table border="1">
506    <tr><th>Variablenname</th><th>Bedeutung</th></tr>
507    <tr>
508     <td><code>assembly</code></td>
509     <td>Erzeugnis</td>
510    </tr>
511    <tr>
512     <td><code>bin</code></td>
513     <td>Stellage</td>
514    </tr>
515    <tr>
516     <td><code>deliverydate</code></td>
517     <td>Lieferdatum</td>
518    </tr>
519    <tr>
520     <td><code>description</code></td>
521     <td>Artikelbeschreibung</td>
522    </tr>
523    <tr>
524     <td><code>linetotal</code></td>
525     <td>Zeilensumme (Anzahl * Einzelpreis)</td>
526    </tr>
527    <tr>
528     <td><code>listprice</code></td>
529     <td>Listenpreis</td>
530    </tr>
531    <tr>
532     <td><code>netprice</code></td>
533     <td>Nettopreis</td>
534    </tr>
535    <tr>
536     <td><code>number</code></td>
537     <td>Artikelnummer</td>
538    </tr>
539    <tr>
540     <td><code>partnotes</code></td>
541     <td>Die beim Artikel gespeicherten Bemerkungen</td>
542    </tr>
543    <tr>
544     <td><code>partsgroup</code></td>
545     <td>Warengruppe</td>
546    </tr>
547    <tr>
548     <td><code>projectnumber</code></td>
549     <td>Projektnummer</td>
550    </tr>
551    <tr>
552     <td><code>qty</code></td>
553     <td>Anzahl</td>
554    </tr>
555    <tr>
556     <td><code>runningnumber</code></td>
557     <td>Position auf der Rechnung (1, 2, 3...)</td>
558    </tr>
559    <tr>
560     <td><code>sellprice</code></td>
561     <td>Verkaufspreis</td>
562    </tr>
563    <tr>
564     <td><code>serialnumber</code></td>
565     <td>Seriennummer</td>
566    </tr>
567    <tr>
568     <td><code>unit</code></td>
569     <td>Einheit</td>
570    </tr>
571   </table>
572  </p>
573
574  <h3><a name="invoice_zahlungen">
575    Variablen f&uuml;r die einzelnen Zahlungseingänge:</a></h3>
576
577  <p>
578   <table border="1">
579    <tr><th>Variablenname</th><th>Bedeutung</th></tr>
580    <tr>
581     <td><code>datepaid</code></td>
582     <td>Datum</td>
583    </tr>
584    <tr>
585     <td><code>memo</code></td>
586     <td>Memo</td>
587    </tr>
588    <tr>
589     <td><code>paid</code></td>
590     <td>Betrag</td>
591    </tr>
592    <tr>
593     <td><code>source</code></td>
594     <td>Beleg</td>
595    </tr>
596    <tr>
597     <td><code>exchangerate</code></td>
598     <td>Wechselkurs</td>
599    </tr>
600    <tr>
601     <td><code>forex</code></td>
602     <td>Konto</td>
603    </tr>
604   </table>
605  </p>
606
607  <small><a href="latex-template-variablen.html#inhaltsverzeichnis">
608    zum Inhaltsverzeichnis</a></small><br>
609  <hr>
610
611  <h2><a name="anderevorlagen">
612    Variablen in anderen Vorlagen</a></h2>
613
614  <p>Die Variablen in anderen Vorlagen sind &auml;hnlich wie in der
615   Rechnung. Allerdings hei&szlig;en die Variablen, die mit <code>inv</code>
616   beginnen, jetzt anders. Bei den Angeboten fangen sie mit <code>quo</code>
617   f&uuml;r "quotation" an: <code>quodate</code> f&uuml;r Angebotsdatum
618   etc. Bei Bestellungen wiederum fangen sie mit <code>ord</code> f&uuml;r
619   "order" an: <code>ordnumber</code> f&uuml;r Bestellnummer etc.</p>
620
621  <p>Manche Variablen sind in anderen Vorlagen hingegen gar nicht vorhanden wie
622   z.B. die f&uuml;r bereits verbuchte Zahlungseing&auml;nge. Dies sind
623   Variablen, die vom Gesch&auml;ftsablauf her in der entsprechenden Vorlage
624   keine Bedeutung haben oder noch nicht belegt sein k&ouml;nnen.</p>
625
626  <small><a href="latex-template-variablen.html#inhaltsverzeichnis">
627    zum Inhaltsverzeichnis</a></small><br>
628  <hr>
629
630  <h2><a name="bloecke">
631    Bl&ouml;cke, bedingte Anweisungen und Schleifen</a></h2>
632
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>&lt;%anweisung%&gt;</code></p>
636
637  <p><b>Achtung: Bl&ouml;cke k&ouml;nnen momentan nicht verschachtelt
638    werden.</b> Das bedeutet, dass innerhalb einer
639    <code>&lt;%foreach%&gt;</code>-Schleife keine
640    <code>&lt;%if%&gt;</code>-Abfragen verwendet werden k&ouml;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>
644
645  <p class="blue"><code>\ifthenelse{\equal{&lt;%variable%&gt;}{}}{}{Dieser
646    Text erscheint nur, wenn &lt;%variable%&gt; nicht leer ist.}</code></p>
647
648  <h3><a name="bloecke_include">Die <code>include</code>-Anweisung</a></h3>
649
650  <p class="blue"><code>&lt;%include dateiname.ext%&gt;</code></p>
651
652  <p>F&uuml;gt den Inhalt einer Datei an der entsprechenden Stelle ein. Der
653   eingef&uuml;gte Text wird ganz normal durch den Parser behandelt und kann
654   Variablen und Bl&ouml;cke enthalten.</p>
655
656  <h3><a name="bloecke_ifnot">Der <code>if not</code>-Block</a></h3>
657
658  <p class="blue"><code>&lt;%if not variablenname%&gt;<br>
659    ...<br>
660    &lt;%end if&gt;</code></p>
661
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>
665
666  <h3><a name="bloecke_if">Der <code>if</code>-Block</a></h3>
667
668  <p class="blue"><code>&lt;%if variablenname%&gt;<br>
669    ...<br>
670    &lt;%end if&gt;</code></p>
671
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
674   ungleich 0 ist.</p>
675
676  <h3><a name="bloecke_foreach">Die <code>foreach</code>-Schleife</a></h3>
677
678  <p class="blue"><code>&lt;%foreach variablenname%&gt;<br>
679    ...<br>
680    &lt;%end foreach&gt;</code></p>
681
682  <p>F&uuml;gt die Zeilen zwischen den beiden Anweisungen so oft ein, wie das
683   Perl-Array der Variablen "variablenname" Elemente enth&auml;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&uuml;r die aktuelle Position
688   gesetzt.</p>
689
690  <p>Die Syntax sieht normalerweise wie folgt aus:</p>
691
692  <p class="blue"><code>&lt;%foreach number%&gt;<br>
693    Position: &lt;%runningnumber%&gt;<br>
694    Anzahl: &lt;%qty%&gt;<br>
695    Artikelnummer: &lt;%number%&gt;<br>
696    Beschreibung: &lt;%description%&gt;<br>
697    ...<br>
698    &lt;%end foreach&gt;</code></p>
699
700  <h3><a name="bloecke_pagebreak">Der <code>pagebreak</code>-Block</a></h3>
701
702  <p class="blue"><code>&lt;%pagebreak ZpZ ZeS ZzS%&gt;<br>
703    ...<br>
704    &lt;%end pagebreak%&gt;</code></p>
705
706  <p>Dieser Block legt das Verhalten beim manuellen Einf&uuml;gen eines
707   Seitenumbruchs fest. Normalerweise bricht LaTeX die Seiten selber um. Beim
708   Rechnungsdruck ist das oft nicht gew&uuml;nscht, oder man m&ouml;chte im
709   Falle eines Seitenumbruchs den &Uuml;bertrag etc. mit ausgeben. Deswegen
710   versucht der Parser, manuell Seitenumbr&uuml;che einzuf&uuml;gen,
711   w&auml;hrend er einen <code>foreach</code>-Block auswertet, weil hier die
712   manuellen Seitenumbr&uuml;che erforderlich werden. Daf&uuml;r ben&ouml;tigt
713   der Parser aber drei Informationen:</p>
714
715  <p>
716   <ol>
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>
723   </ol>
724  </p>
725
726  <p>Diese Parameter sind drei Zahlen, die manuell durch Verwendung von langen
727   Warenbezeichnungen und Rechnungen mit vielen Posten bestimmt werden
728   m&uuml;ssen.</p>
729
730  <p>&Uuml;blicherweise wird in diesem Block zuerst die aktuelle Tabelle
731   geschlossen, eventuell Text eingef&uuml;gt (z.B. "Fortsetzung auf der
732   n&auml;chsten Seite"), dann ein Seitenumbruch erzwungen, eventuell Text
733   eingef&uuml;gt (z.B. "&Uuml;bertrag von der vorherigen Seite:
734   &lt;%sumcarriedforward%&gt; EUR") und die Tabelle wieder ge&ouml;ffnet.</p>
735
736  <p>Wird kein manueller Seitenumbruch gew&uuml;scht, so kann dieser Block
737   komplett entfallen.</p>
738
739  <small><a href="latex-template-variablen.html#inhaltsverzeichnis">
740    zum Inhaltsverzeichnis</a></small><br>
741  <hr>
742
743 </body>
744 </html>