geschrieben von Moritz Bunkus. Version: $Id$
Dies ist eine Auflistung der Standard-Dokumentenvorlagen und aller
zur Bearbeitung verfügbaren Variablen. Eine Variable wird in
einer Vorlage durch ihren Inhalt ersetzt, wenn sie in der Form
<%variablenname%>
verwendet wird.
Früher wurde hier nur über LaTeX gesprochen. Inzwischen unterstützt Lx-Office aber auch OpenDocument-Vorlagen. Sofern es nicht ausdrücklich eingeschränkt wird, gilt das im Folgenden gesagte für alle Vorlagenarten.
Insgesamt sind technisch gesehen eine ganze Menge mehr Variablen verfügbar als hier aufgelistet werden. Die meisten davon können allerdings innerhalb einer solchen Vorlage nicht sinnvoll verwendet werden. Wenn eine Auflistung dieser Variablen gewollt ist, so kann diese wie folgt erhalten werden:
SL/Form.pm
öffnen und am Anfang die Zeile
"use Data::Dumper;"einfügen.
Form.pm
die Funktion parse_template
suchen und hier die Zeile print(STDERR Dumper($self));einfügen.
error.log
vom Apache steht die Ausgabe der Variablen
$self
in der Form 'key' => 'value',
. Alle
key
s sind verfügbar.Diese folgende kurze Auflistung zeigt, welche Vorlage bei welcher Funktion ausgelesen wird. Dabei ist die Dateiendung ".ext" geeignet zu ersetzen: ".tex" fü LaTeX-Vorlagen und ".odt" für OpenDocument-Vorlagen.
bin_list.ext
-- Lagerlistecheck.ext
-- ?invoice.ext
-- Rechnungpacking_list.ext
-- Verpackungslistepick_list.ext
-- Sammellistepurcharse_order.ext
-- Bestellung an Lieferantenrequest_quotation.ext
-- Anfrage an Lieferantensales_order.ext
-- Bestellungsales_quotation.ext
-- Angebot an Kunden
Variablenname | Bedeutung |
---|---|
account_number |
Kontonummer |
bank |
Name der Bank |
bank_code |
Bankleitzahl |
business |
Kunden-/Lieferantentyp |
city |
Stadt |
contact |
Kontakt |
country |
Land |
cp_email |
Email des Ansprechpartners |
cp_givenname |
Vorname des Ansprechpartners |
cp_greeting |
Anrede des Ansprechpartners |
cp_name |
Name des Ansprechpartners |
cp_phone1 |
Telefonnummer 1 des Ansprechpartners |
cp_phone2 |
Telefonnummer 2 des Ansprechpartners |
cp_title |
Titel des Ansprechpartners |
creditlimit |
Kreditlimit |
customeremail |
Email des Kunden; nur für Kunden |
customerfax |
Faxnummer des Kunden; nur für Kunden |
customernotes |
Bemerkungen beim Kunden; nur für Kunden |
customernumber |
Kundennummer; nur für Kunden |
customerphone |
Telefonnummer des Kunden; nur für Kunden |
discount |
Rabatt |
email |
Emailadresse |
fax |
Faxnummer |
homepage |
Homepage |
language |
Sprache |
name |
Firmenname |
payment_terms |
Zahlungskonditionen |
phone |
Telefonnummer |
shiptocity |
Stadt (Lieferadresse) * |
shiptocontact |
Kontakt (Lieferadresse) * |
shiptocountry |
Land (Lieferadresse) * |
shiptodepartment1 |
Abteilung 1 (Lieferadresse) * |
shiptodepartment2 |
Abteilung 2 (Lieferadresse) * |
shiptoemail |
Email (Lieferadresse) * |
shiptofax |
Fax (Lieferadresse) * |
shiptoname |
Firmenname (Lieferadresse) * |
shiptophone |
Telefonnummer (Lieferadresse) * |
shiptostreet |
Straße und Hausnummer (Lieferadresse) * |
shiptozipcode |
Postleitzahl (Lieferadresse) * |
street |
Straße und Hausnummer |
taxnumber |
Steuernummer |
vendoremail |
Email des Lieferanten; nur für Lieferanten |
vendorfax |
Faxnummer des Lieferanten; nur für Lieferanten |
vendornotes |
Bemerkungen beim Lieferanten; nur für Lieferanten |
vendornumber |
Lieferantennummer; nur für Lieferanten |
vendorphone |
Telefonnummer des Lieferanten; nur für Lieferanten |
zipcode |
Postleitzahl |
Anmerkung: Sind die
shipto*
-Felder in den Stammdaten nicht eingetragen, so haben
die Variablen shipto*
den gleichen Wert wie die die
entsprechenden Variablen der Lieferdaten. Das bedeutet, dass sich einige
shipto*
-Variablen so nicht in den Stammdaten wiederfinden
sondern schlicht Kopien der Lieferdatenvariablen sind
(z.B. shiptocontact
).
Variablenname | Bedeutung |
---|---|
employee_address |
Adressfeld |
employee_businessnumber |
Firmennummer |
employee_company |
Firmenname |
employee_co_ustid |
Usatzsteuer-Identifikationsnummer |
employee_duns |
DUNS-Nummer |
employee_email |
|
employee_fax |
Fax |
employee_name |
voller Name |
employee_signature |
Signatur |
employee_taxnumber |
Steuernummer |
employee_tel |
Telefonnummer |
Variablenname | Bedeutung |
---|---|
salesman_address |
Adressfeld |
salesman_businessnumber |
Firmennummer |
salesman_company |
Firmenname |
salesman_co_ustid |
Usatzsteuer-Identifikationsnummer |
salesman_duns |
DUNS-Nummer |
salesman_email |
|
salesman_fax |
Fax |
salesman_name |
voller Name |
salesman_signature |
Signatur |
salesman_taxnumber |
Steuernummer |
salesman_tel |
Telefonnummer |
Variablenname | Bedeutung |
---|---|
tax |
Steuer |
taxbase |
zu versteuernder Betrag |
taxdescription |
Name der Steuer |
taxrate |
Steuersatz |
Variablenname | Bedeutung |
---|---|
creditremaining |
Verbleibender Kredit |
currency |
Währung |
cusordnumber |
Bestellnummer beim Kunden |
deliverydate |
Lieferdatum |
duedate |
Fälligkeitsdatum |
globalprojectnumber |
Projektnummer des ganzen Beleges |
intnotes |
Interne Bemerkungen |
invdate |
Rechnungsdatum |
invnumber |
Rechnungsnummer |
invtotal |
gesamter Rechnungsbetrag |
notes |
Bemerkungen der Rechnung |
orddate |
Auftragsdatum |
ordnumber |
Auftragsnummer, wenn die Rechnung aus einem Auftrag erstellt wurde |
payment_terms |
Zahlungskonditionen |
quodate |
Angebotsdatum |
quonumber |
Angebotsnummer |
shippingpoint |
Versandort |
shipvia |
Transportmittel |
subtotal |
Zwischensumme aller Posten ohne Steuern |
sumcarriedforward |
Zwischensumme aller bisher ausgegebenen Posten. Sollte nur in einem
pagebreak -Block verwendet werden. |
total |
Restsumme der Rechnung (Summe abzüglich bereits bezahlter Posten) |
transaction_description |
Vorgangsbezeichnung |
transdate |
Auftragsdatum wenn die Rechnung aus einem Auftrag erstellt wurde |
Variablenname | Bedeutung |
---|---|
assembly |
Erzeugnis |
bin |
Stellage |
deliverydate_oe |
Lieferdatum |
description |
Artikelbeschreibung |
discount |
Rabatt als Betrag |
linetotal |
Zeilensumme (Anzahl * Einzelpreis) |
listprice |
Listenpreis |
netprice |
Nettopreis |
number |
Artikelnummer |
ordnumber_oe |
Auftragsnummer des Originalauftrags, wenn die Rechnung aus einem Sammelauftrag erstellt wurde |
p_discount |
Rabatt in Prozent |
partnotes |
Die beim Artikel gespeicherten Bemerkungen |
partsgroup |
Warengruppe |
projectnumber |
Projektnummer |
qty |
Anzahl |
runningnumber |
Position auf der Rechnung (1, 2, 3...) |
sellprice |
Verkaufspreis |
serialnumber |
Seriennummer |
transdate_oe |
Auftragsdatum des Originalauftrags, wenn die Rechnung aus einem Sammelauftrag erstellt wurde |
unit |
Einheit |
Variablenname | Bedeutung |
---|---|
datepaid |
Datum |
memo |
Memo |
paid |
Betrag |
source |
Beleg |
exchangerate |
Wechselkurs |
forex |
Konto |
Die Variablen des Verkäufers stehen wie gewohnt
als employee_...
zur Verfügung. Die Adressdaten des
Kunden stehen als Variablen name
, street
,
zipcode
, city
, country
,
department_1
, department_2
, und
email
zur Verfügung.
Weitere Variablen beinhalten:
Variablenname | Bedeutung |
---|---|
dunning_date |
Datum der Mahnung |
dunning_duedate |
Fälligkeitsdatum für diese Mahhnung |
fee |
Kummulative Mahngebühren |
interest_rate |
Zinssatz per anno in Prozent |
total_amount |
Gesamter noch zu zahlender Betrag als fee + total_interest + total_open_amount |
total_interest |
Zinsen per anno über alle Rechnungen |
total_open_amount |
Summe über alle offene Beträge der Rechnungen |
Variablenname | Bedeutung |
---|---|
dn_amount |
Rechnungssumme (brutto) |
dn_duedate |
Originales Fälligkeitsdatum der Rechnung |
dn_dunning_date |
Datum der Mahnung |
dn_dunning_duedate |
Fälligkeitsdatum der Mahnung |
dn_fee |
Kummulative Mahngebühr (ist die gleiche wie für die ganze Mahnung, da die Gebühr nur einmal pro Mahnung erhoben wird) |
dn_interest |
Zinsen per anno f&uum;r diese Rechnung |
dn_invnumber |
Rechnungsnummer |
dn_netamount |
Rechnungssumme (netto) |
dn_open_amount |
Offener Rechnungsbetrag |
dn_ordnumber |
Bestellnummer |
dn_transdate |
Rechnungsdatum |
Die Variablen in anderen Vorlagen sind ähnlich wie in der
Rechnung. Allerdings heißen die Variablen, die mit inv
beginnen, jetzt anders. Bei den Angeboten fangen sie mit quo
für "quotation" an: quodate
für Angebotsdatum
etc. Bei Bestellungen wiederum fangen sie mit ord
für
"order" an: ordnumber
für Bestellnummer etc.
Manche Variablen sind in anderen Vorlagen hingegen gar nicht vorhanden wie z.B. die für bereits verbuchte Zahlungseingänge. Dies sind Variablen, die vom Geschäftsablauf her in der entsprechenden Vorlage keine Bedeutung haben oder noch nicht belegt sein können.
zum InhaltsverzeichnisDer Parser kennt neben den Variablen einige weitere Konstrukte, die
gesondert behandelt werden. Diese sind wie Variablennamen in spezieller
Weise markiert: <%anweisung%>
if not
-Block<%if not variablenname%>
...
<%end>
Eine normale "if-not-then"-Bedingung. Die Zeilen zwischen dem "if not" und dem "end" werden nur ausgegeben, wenn die Variable "variablenname" nicht gesetzt oder gleich 0 ist.
if
-Block<%if variablenname%>
...
<%end>
Eine normale "if-then"-Bedingung. Die Zeilen zwischen dem "if" und dem "end" werden nur ausgegeben, wenn die Variable "variablenname" gesetzt und ungleich 0 ist.
foreach
-Schleife<%foreach variablenname%>
...
<%end>
Fügt die Zeilen zwischen den beiden Anweisungen so oft ein, wie das Perl-Array der Variablen "variablenname" Elemente enthät. Dieses Konstrukt wird zur Ausgabe der einzelnen Posten einer Rechnung / eines Angebots sowie zur Ausgabe der Steuern benutzt. In jedem Durchlauf werden die zeilenbezogenen Variablen jeweils auf den Wert für die aktuelle Position gesetzt.
Die Syntax sieht normalerweise wie folgt aus:
<%foreach number%>
Position: <%runningnumber%>
Anzahl: <%qty%>
Artikelnummer: <%number%>
Beschreibung: <%description%>
...
<%end>
Besonderheit in OpenDocument-Vorlagen: Tritt ein
<foreach>
-Block innerhalb einer Tabellenzelle
auf, so wird die komplette Tabellenzeile so oft wiederholt wie
notwendig. Tritt er außerhalb auf, so wird nur der Inhalt
zwischen <foreach>
und <end>
wiederholt, nicht aber die komplette Zeile, in der er steht.
pagebreak
-Block<%pagebreak ZpZ ZeS ZzS%>
...
<%end>
Dieser Block existiert nur in LaTeX-Vorlagen.
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 foreach
-Block auswertet, weil hier die
manuellen Seitenumbrüche erforderlich werden. Dafür benötigt
der Parser aber drei Informationen:
Diese Parameter sind drei Zahlen, die manuell durch Verwendung von langen Warenbezeichnungen und Rechnungen mit vielen Posten bestimmt werden müssen.
Ü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.
Wird kein manueller Seitenumbruch gewüscht, so kann dieser Block komplett entfallen.
zum InhaltsverzeichnisWenn der Benutzer innhalb von Formularen in Lx-Office Text anders formatiert haben möchte, so ist dies begrenzt möglich. Lx-Office unterstützt die Textformatierung mit HTML-ähnlichen Tags. Der Benutzer kann z.B. bei der Artikelbeschreibung auf einer Rechnung Teile des Texts zwischen Start- und Endtags setzen. Dieser Teil wird dann automatisch in Anweisungen für das ausgewählte Vorlagenformat (HTML oder PDF über LaTeX) umgesetzt.
Die unterstützen Formatierungen sind:
Formatierung | Auswirkung |
---|---|
<b>Text</b> |
Text wird in fettdruck gesetzt. |
<i>Text</i> |
Text wird kursiv gesetzt. |
<u>Text</u> |
Text wird unterstrichen. |
<s>Text</s> |
Text wird |
<pagebreak> |
Erzwingt einen Seitenumbruch (siehe unten). |
Eine Besonderheit ist der Befehl <pagebreak>
,
der nur in LaTeX-Vorlagen funktioniert und in anderen Vorlagen
einfach gelöscht wird. Dieser erzwingt unabhängig von der
im pagebreak-Block
voreingestellten Werte einen Seitenumbruch nach der aktuellen
Rechnungsposition. Dementsprechend funktioniert er nur innerhalb von
<foreach...>
-Schleifen. Weiterhin benötigt er kein
Endtag.