X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;ds=sidebyside;f=doc%2Fdokumentenvorlagen-und-variablen.html;h=e1dac111be62efa5429a829f9ed122474fcf2c84;hb=db8722a48f574db5bc34b6682a54af7ae6f0181c;hp=6e9bdb4040e8ccaaf9410b5acf597f6839317dec;hpb=bc450f35d9cd3de99f945135c19b9688b5e52995;p=kivitendo-erp.git diff --git a/doc/dokumentenvorlagen-und-variablen.html b/doc/dokumentenvorlagen-und-variablen.html index 6e9bdb404..e1dac111b 100644 --- a/doc/dokumentenvorlagen-und-variablen.html +++ b/doc/dokumentenvorlagen-und-variablen.html @@ -48,6 +48,12 @@ td {
  • Zuordnung von Dateinamen zu den Funktionen
  • +
  • Variablen ausgeben +
  • + +
  • Verwendung in Druckbefehlen +
  • +
  • Anfang und Ende der Tags verändern
  • @@ -112,6 +118,7 @@ td {
  • Angebote und Preisanfragen
  • Auftragsbestätigungen und Lieferantenaufträge
  • Lieferscheine (Verkauf und Einkauf)
  • +
  • Sammelrechnung
  • @@ -124,9 +131,6 @@ td {
  • Die foreach-Schleife
  • - -
  • - Der pagebreak-Block
  • @@ -152,9 +156,9 @@ td {

    Einige Zahlenwerte werden auch in unformatierter Form zur Verfügung gestellt (also z.B. 35 statt 35,00 oder 12.3 statt 12,30). Der Dezimaltrenner ist dabei also immer ein Punkt unabhaengig vom eingestellten Zahlenformat. - Diese Variabelen kann man mit der Erweiterung _num (für numeric) aufrufen - (also z.B. netprice = 12,30 -- netprice_num = 12.3). Variabeln die zusätzlich - unformatiert zur Verfügung stehen sind unten als variable[_num] gelistet. + Diese Variabelen kann man mit der Erweiterung _nofmt (für no-format) aufrufen + (also z.B. netprice = 12,30 -- netprice_nofmt = 12.3). Variabeln die zusätzlich + unformatiert zur Verfügung stehen sind unten als variable[_nofmt] gelistet. Die Eckigen Klammern weisen also auf eine optionale Verwändung der Erweiterung hin.

    @@ -191,6 +195,68 @@ td { zum Inhaltsverzeichnis

    +

    Variablen ausgeben

    + +

    Um eine Variable auszugeben, müssen sie einfach nur zwischen die + Tags geschrieben werden, also + z.B. <%variablenname%>.

    + +

    + Optional kann man auch mit Leerzeichen getrennte Flags angeben, die + man aber nur selten brauchen wird. Die Syntax sieht also so + aus: <%variablenname FLAG1 FLAG2%>. Momentan werden + die folgenden Flags unterstützt: +

    + + + +

    + Beispiel: <%quototal NOFORMAT%> +

    + + + zum Inhaltsverzeichnis
    +
    + +

    Verwendung in Druckbefehlen

    + +

    + In der Admininstration können Drucker definiert werden. Auch im dort + eingebbaren Druckbefehl können die hier aufgelisteten Variablen und + Kontrollstrukturen verwendet werden. Ihr Inhalt wird dabei nach den + Regeln der gängigen Shells formatiert, sodass Sonderzeichen + wie `...` nicht zu unerwünschtem Verhalten führen. +

    + +

    + Dies erlaubt z.B. die Definition eines Faxes als Druckerbefehl, für + das die Telefonnummer eines Ansprechpartners als Teil der + Kommandozeile verwendet wird. Für ein fiktives Kommando könnte das + z.B. wie folgt aussehen: +

    + +

    + send_fax --number <%if cp_phone2%><%cp_phone2%><%else%><%cp_phone1%><%end%> +

    + + + zum Inhaltsverzeichnis
    +
    +

    Anfang und Ende der Tags verändern

    @@ -290,6 +356,23 @@ td {

    + Sprache, Drucker und E-Mail + +

    Angeforderte Sprache und Druckerkürzel in den Dateinamen mit eingearbeitet. So wird aus der Vorlage sales_order.ext bei Sprache de und Druckerkürzel lpr2 der Vorlagenname sales_order_de_lpr2.ext. Zusätzlich können für E-Mails andere Vorlagen erstellt werden, diese bekommen dann noch das Kürzel _email, der vollständige Vorlagenname wäre dann sales_order_email_de_lpr2.ext. In allen Fällen kann eine Standarddatei default.ext hinterlegt werden. Diese wird verwendet, wenn keine der anderen Varianten gefunden wird.

    + +

    Die vollständige Suchreihenfolge für einen Verkaufsauftrag mit der Sprache "de" und dem Drucker "lpr2", der per E-Mail im Format PDF verschickt wird, ist:

    +

    + + + + + + +
    Reihenfolge der möglichen Vorlagennamen
    sales_order_email_de_lpr2.tex
    sales_order_de_lpr2.tex
    sales_order.tex
    default.tex
    +

    + +

    Die kurzen Varianten dieser Vorlagentitel müssen dann entweder Standardwerte anzeigen, oder die angeforderten Werte selbst auswerten, siehe dazu Metadaten in Vorlagen

    + zum Inhaltsverzeichnis

    @@ -297,6 +380,57 @@ td {

    Allgemeine Variablen, die in allen Vorlagen vorhanden sind

    +

    + Metainformationen zur angeforderten Vorlage:

    + +

    Diese Variablen liefern Informationen darüber welche Variante einer Vorlage der Benutzer angefragt hat. Sie sind nützlich für Vorlagenautoren, die aus einer zentralen Layoutvorlage die einzelnen Formulare einbinden möchten.

    + +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    VariablennameBedeutung
    template_meta.formnameBasisname der Vorlage. Identisch mit der Zurordnung zu den Dateinamen ohne die Erweiterung. Ein Verkaufsauftrag enthält hier sales_order.
    template_meta.language.descriptionBeschreibung der verwendeten Sprache
    template_meta.language.template_codeVorlagenürzel der verwendeten Sprache, identisch mit dem Kürzel das im Dateinamen verwendetet wird.
    template_meta.language.output_numberformatZahlenformat der verwendeten Sprache in der Form "1.000,00". Experimentell!. Nur interessant für Vorlagen die mit unformatierten Werten arbeiten.
    template_meta.language.output_dateformatDatumsformat der verwendeten Sprache in der Form "dd.mm.yyyy". Experimentell!. Nur interessant für Vorlagen die mit unformatierten Werten arbeiten.
    template_meta.formatDas angeforderte Format. Kann im Moment die Werte pdf, postscript, html, opendocument, opendocument_pdf und excel enthalten.
    template_meta.extensionDateierweiterung, wie im Dateinamen. Wird aus format entschieden.
    template_meta.mediaAusgabemedium. Kann zur Zeit die Werte screen für Bildschirm, email für E-Mmail (triggert das _email Kürzel im Dateinamen), printer für Drucker, und queue für Warteschlange enthalten.
    template_meta.printer.descriptionBeschreibung des ausgewählten Druckers
    template_meta.printer.template_codeVorlagenürzel des ausgewählten Druckers, identisch mit dem Kürzel das im Dateinamen verwendetet wird.
    +

    +

    Stammdaten von Kunden und Lieferanten:

    @@ -492,7 +626,7 @@ td { ustid - Usatzsteuer-Identifikationsnummer + Umsatzsteuer-Identifikationsnummer @@ -753,15 +887,9 @@ td { Transportmittel - subtotal + subtotal[_nofmt] 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) @@ -792,11 +920,11 @@ td { Artikelbeschreibung - discount[_num] + discount[_nofmt] Rabatt als Betrag - discount_sub[_num] + discount_sub[_nofmt] Zwischensumme mit Rabatt @@ -812,13 +940,9 @@ td { Grafik - linetotal[_num] + linetotal[_nofmt] Zeilensumme (Anzahl * Einzelpreis) - - linetotal_raw[_num] - Zeilensumme (Anzahl * Einzelpreis) gerundet auf 8 Stellen nach dem Komma (statt 2) - longdescription Langtext @@ -828,15 +952,15 @@ td { Mikrofilm - netprice[_num] + netprice[_nofmt] Nettopreis - nodiscount_linetotal[_num] + nodiscount_linetotal[_nofmt] Zeilensumme ohne Rabatt - nodiscount_sub[_num] + nodiscount_sub[_nofmt] Zwischensumme ohne Rabatt @@ -876,7 +1000,7 @@ td { Projektbeschreibung - qty[_num] + qty[_nofmt] Anzahl @@ -888,7 +1012,7 @@ td { Position auf der Rechnung (1, 2, 3...) - sellprice + sellprice[_nofmt] Verkaufspreis @@ -1100,6 +1224,11 @@ td { dn_transdate Rechnungsdatum + + dn_curr + Währung, in der die Rechnung erstellt wurde. (Die Rechnungsbeträge + sind aber immer in der Hauptwährung) +

    @@ -1232,6 +1361,14 @@ td {

    +

    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:

    + +

    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 @@ -1277,6 +1414,81 @@ td {

    +

    Sammelrechnung

    + +

    Variablen für Sammelrechnung:

    +

    + + + + + + + + + + + + + + + + + + + + + + +
    VariablennameBedeutung
    c0totalGesamtbetrag aller Rechnungen mit Fälligkeit < 30 Tage
    c30totalGesamtbetrag aller Rechnungen mit Fälligkeit >= 30 und < 60 Tage
    c60totalGesamtbetrag aller Rechnungen mit Fälligkeit >= 60 und < 90 Tage
    c90totalGesamtbetrag aller Rechnungen mit Fälligkeit >= 90 Tage
    totalGesamtbetrag aller Rechnungen
    +

    + +

    Variablen für jede Rechnungsposition in Sammelrechnung:

    +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    VariablennameBedeutung
    invnumberRechnungsnummer
    invdateRechnungsdatum
    duedateFälligkeitsdatum
    amountSumme der Rechnung
    openNoch offener Betrag der Rechnung
    c0Noch offener Rechnungsbetrag mit Fälligkeit < 30 Tage
    c30Noch offener Rechnungsbetrag mit Fälligkeit >= 30 und < 60 Tage
    c60Noch offener Rechnungsbetrag mit Fälligkeit >= 60 und < 90 Tage
    c90Noch offener Rechnungsbetrag mit Fälligkeit >= 90 Tage
    +

    + + + + zum Inhaltsverzeichnis

    @@ -1290,14 +1502,14 @@ td { ... <%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 + 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 + "sales_quotation"%>, so könnte er mit <%end%> genauso abgeschlossen werden wie mit <%end if%> oder auch @@ -1320,33 +1532,33 @@ td { 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 +

    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 + 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 + testet die Variable "var1" auf Übereinstimmung mit der Zeichenkette "Wert". Mittels "!=" anstelle von - "==" würde auf Ungleichheit getestet.

    + "==" würde auf Ungleichheit getestet.

    <%if var1 == var2%> testet die - Variable "var1" auf Übereinstimmung mit der Variablen + Variable "var1" auf Übereinstimmung mit der Variablen "var2". Mittels "!=" anstelle von "==" - würde auf Ungleichheit getestet.

    + 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 +

    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: +

    Beispiel für einen Test, ob die Variable "intnotes" + (interne Bemerkungen) das Wort "schwierig" enthält: <%if intnotes =~ "schwierig"%>

    @@ -1381,47 +1593,6 @@ td { zwischen <%foreach%> und <%end%> wiederholt, nicht aber die komplette Zeile, in der er steht.

    -

    Der 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:

    - -

    -

      -
    1. Wieviele Zeichen passen bei der Variablen "description" pro Posten - in eine Zeile? Das ist der Parameter "ZpZ" (Zeichen pro Zeile).
    2. -
    3. Wieviele Zeilen/Posten passen auf die erste Seite? Das - ist der Parameter "ZeS" (Zeilen erste Seite).
    4. -
    5. Wieviele Zeilen/Posten passen auf die zweite und alle nachfolgenden - Seiten? Das ist der Parameter "ZzS" (Zeilen zweite Seite).
    6. -
    -

    - -

    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 Inhaltsverzeichnis

    @@ -1464,19 +1635,23 @@ td { <pagebreak> Erzwingt einen Seitenumbruch (siehe unten). + + <bullet> + Erzeugt einen ausgefüllten Kreis für Aufzählungen (•) (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 + einfach gelöscht wird. Dieser erzwingt einen Seitenumbruch nach + der aktuellen Rechnungsposition. Dementsprechend funktioniert er nur + innerhalb von <%foreach...%>-Schleifen. Weiterhin benötigt er kein Endtag.

    +

    Auch <bullet> funktioniert momentan auch nur in Latex-Vorlagen.

    + zum Inhaltsverzeichnis