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. Für LaTeX-
und HTML-Vorlagen kann man die Form dieser Tags auch
verändern.
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.Der Standardstil für Tags sieht vor, dass ein Tag mit dem
Kleinerzeichen und einem Prozentzeichen beginnt und mit dem
Prozentzeichen und dem Größerzeichen endet,
beispielsweise <%customer%>
. Da diese Form aber
z.B. in LaTeX zu Problemen führen kann, weil das Prozentzeichen
dort Kommentare einleitet, kann pro HTML- oder
LaTeX-Dokumentenvorlage der Stil umgestellt werden.
Dazu werden in die Datei Zeilen geschrieben, die mit dem für
das Format gültigen Kommentarzeichen anfangen,
dann config:
enthalten, die entsprechende Option setzen
und bei HTML-Dokumentenvorlagen mit dem Kommentarendzeichen
enden. Beispiel für LaTeX:
% config: tag-style=($ $)
Dies würde Lx-Office dazu veranlassen, Variablen zu ersetzen,
wenn sie wie folgt aussehen: ($customer$)
. Das
äquivalente Beispiel für HTML-Dokumentenvorlagen sieht so
aus:
<!-- config: tag-style=($ $) -->
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.
Dateiname | Bedeutung |
---|---|
bin_list.ext |
Lagerliste |
check.ext |
? |
invoice.ext |
Rechnung |
packing_list.ext |
Packliste |
pick_list.ext |
Sammelliste |
purchase_delivery_order.ext |
Lieferschein (Einkauf) |
purcharse_order.ext |
Bestellung an Lieferanten |
request_quotation.ext |
Anfrage an Lieferanten |
sales_delivery_order.ext |
Lieferschein (Verkauf) |
sales_order.ext |
Bestellung |
sales_quotation.ext |
Angebot an Kunden |
zahlungserinnerung.ext |
Mahnung (Dateiname im Programm konfigurierbar) |
zahlungserinnerung_invoice.ext |
Rechnung über Mahngebühren (Dateiname im Programm konfigurierbar) |
Variablenname | Bedeutung |
---|---|
account_number |
Kontonummer |
bank |
Name der Bank |
bank_code |
Bankleitzahl |
bic |
Bank-Identifikations-Code (Bank Identifier Code, BIC) |
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 |
iban |
Internationale Kontonummer (International Bank Account Number, IBAN) |
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 |
ustid |
Usatzsteuer-Identifikationsnummer |
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 |
globalprojectdescription |
Projekbeschreibung 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 |
---|---|
bin |
Stellage |
description |
Artikelbeschreibung |
discount |
Rabatt als Betrag |
discount_sub |
Zwischensumme mit Rabatt |
drawing |
Zeichnung |
ean |
EAN-Code |
image |
Grafik |
linetotal |
Zeilensumme (Anzahl * Einzelpreis) |
longdescription |
Langtext |
microfiche |
Mikrofilm |
netprice |
Nettopreis |
nodiscount_linetotal |
Zeilensumme ohne Rabatt |
nodiscount_sub |
Zwischensumme ohne Rabatt |
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 |
price_factor |
Der Preisfaktor als Zahl, sofern einer eingestellt ist |
price_factor_name |
Der Name des Preisfaktors, sofern einer eingestellt ist |
projectnumber |
Projektnummer |
projectdescription |
Projektbeschreibung |
qty |
Anzahl |
reqdate |
Lieferdatum |
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 |
weight |
Gewicht |
Für jeden Posten gibt es ein Unterarray mit den Informationen über
Lieferanten und Lieferantenartikelnummer. Diese müssen mit
einer foreach
-Schleife ausgegeben werden, da für jeden
Artikel mehrere Lieferanteninformationen hinterlegt sein können. Die
Variablen dafür lauten:
Variablenname | Bedeutung |
---|---|
make |
Lieferant |
model |
Lieferantenartikelnummer |
Variablenname | Bedeutung |
---|---|
payment |
Betrag |
paymentaccount |
Konto |
paymentdate |
Datum |
paymentmemo |
Memo |
paymentsource |
Beleg |
Die vom Benutzer definierten Variablen für Kunden und
Lieferanten stehen beim Ausdruck von Einkaufs- und Verkaufsbelegen
ebenfalls zur Verfügung. Ihre Namen setzen sich aus dem
Präfix vc_cvar_
und dem vom Benutzer festgelegten
Variablennamen zusammen.
Beispiel: Der Benutzer hat eine Variable
namens number_of_employees
definiert, die die Anzahl
der Mitarbeiter des Unternehmens enthält. Diese Variable steht
dann unter dem Namen vc_cvar_number_of_employees
zur
Verfügung.
Die Namen der Vorlagen werden im System-Menü vom Benutzer
eingegeben. Wird für ein Mahnlevel die Option zur automatischen
Erstellung einer Rechnung über die Mahngebühren und Zinsen
aktiviert, so wird der Name der Vorlage für diese Rechnung aus
dem Vorlagenname für diese Mahnstufe mit dem
Zusatz _invoice
gebildet. Weiterhin werden die
Kürzel für die ausgewählte Sprache und den
ausgewählten Drucker angehängt.
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 |
dunning_id |
Mahnungsnummer |
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 |
dn_interest |
Zinsen per anno für diese Rechnung |
dn_invnumber |
Rechnungsnummer |
dn_linetotal |
Noch zu zahlender Betrag (ergibt sich aus dn_open_amount + dn_fee + dn_interest ) |
dn_netamount |
Rechnungssumme (netto) |
dn_open_amount |
Offener Rechnungsbetrag |
dn_ordnumber |
Bestellnummer |
dn_transdate |
Rechnungsdatum |
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 |
---|---|
duedate |
Fälligkeitsdatum der Rechnung |
dunning_id |
Mahnungsnummer |
fee |
Mahngebühren |
interest |
Zinsen |
invamount |
Rechnungssumme (ergibt sich aus fee + interest ) |
invdate |
Rechnungsdatum |
invnumber |
Rechnungsnummer |
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.
Im Folgenden werden nur wichtige Unterschiede zu den Variablen in Rechnungen aufgeführt.
Variablenname | Bedeutung |
---|---|
quonumber |
Angebots- bzw. Anfragenummer |
reqdate |
Gültigkeitsdatum (bei Angeboten) bzw. Lieferdatum (bei Preisanfragen) |
transdate |
Angebots- bzw. Anfragedatum |
Variablenname | Bedeutung |
---|---|
ordnumber |
Auftragsnummer |
reqdate |
Lieferdatum |
transdate |
Auftragsdatum |
Variablenname | Bedeutung |
---|---|
cusordnumber |
Bestellnummer des Kunden (im Verkauf) bzw. Bestellnummer des Lieferanten (im Einkauf) |
donumber |
Lieferscheinnummer |
transdate |
Lieferscheindatum |
Für jede Position eines Lieferscheines gibt es ein Unterarray mit
den Informationen darüber, von welchem Lager und Lagerplatz aus die
Waren verschickt wurden (Verkaufslieferscheine) bzw. auf welchen
Lagerplatz sie eingelagert wurden. Diese müssen mittels
einer foreach
-Schleife ausgegeben werden. Diese
Variablen sind:
Variablenname | Bedeutung |
---|---|
si_bin |
Lagerplatz |
si_chargenumber |
Chargennummer |
si_bestbefore |
Mindesthaltbarkeit |
si_number |
Artikelnummer |
si_qty |
Anzahl bzw. Menge |
si_runningnumber |
Positionsnummer (1, 2, 3 etc) |
si_unit |
Einheit |
si_warehouse |
Lager |
Der Parser kennt neben den Variablen einige weitere Konstrukte,
die gesondert behandelt werden. Diese sind wie Variablennamen in
spezieller Weise markiert: <%anweisung%>
... <%end%>
Anmerkung zum <%end%>
: Der besseren
Verständlichkeit halber kann man nach dem end
noch
beliebig weitere Wörter schreiben, um so zu markieren, welche
Anweisung (z.B. if
oder foreach
) damit
abgeschlossen wird.
Beispiel: Lautet der Beginn eines Blockes
z.B. <%if type ==
"sales_quotation"%>
, so könnte er mit
<%end%>
genauso abgeschlossen werden
wie mit
<%end if%>
oder auch
<%end type ==
"sales_quotation"%>
.
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.
Die Bedingung kann auch negiert werden, indem das Wort
"not" nach dem "if" verwendet
wird. Beispiel: <%if not
cp_greeting%>
Zusätzlich zu dem einfachen Test, ob eine Variable gesetzt ist oder nicht, bietet dieser Block auch die Möglichkeit, den Inhalt einer Variablen mit einer festen Zeichenkette oder einer anderen Variablen zu vergleichen. Ob der Vergleich mit einer Zeichenkette oder einer anderen Variablen vorgenommen wird, hängt davon ab, ob die rechte Seite des Vergleichsoperators in Anführungszeichen gesetzt wird (Vergleich mit Zeichenkette) oder nicht (Vergleich mit anderer Variablen). Zwei Beispiele, die beide Vergleiche zeigen:
<%if var1 == "Wert"%>
testet die Variable "var1" auf Übereinstimmung mit der
Zeichenkette "Wert". Mittels "!=" anstelle von
"==" würde auf Ungleichheit getestet.
<%if var1 == var2%>
testet die
Variable "var1" auf Übereinstimmung mit der Variablen
"var2". Mittels "!=" anstelle von "=="
würde auf Ungleichheit getestet.
Erfahrere Benutzer können neben der Tests auf (Un-)Gleichheit auch Tests auf Übereinstimmung mit regulären Ausdrücken ohne Berücksichtung der Groß- und Kleinschreibung durchführen. Dazu dient dieselbe Syntax wie oben nur mit "=~" und "!~" als Vergleichsoperatoren.
Beispiel für einen Test, ob die Variable "intnotes"
(interne Bemerkungen) das Wort "schwierig" enthält:
<%if intnotes =~
"schwierig"%>
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.