X-Git-Url: http://wagnertech.de/git?a=blobdiff_plain;f=doc%2Fdokumentenvorlagen-und-variablen.html;h=e1dac111be62efa5429a829f9ed122474fcf2c84;hb=6caa57e2e994c8f99c209ce18379305eb01d1676;hp=697ef18907c70efafa1d1ddd015610c0d4c12102;hpb=f76e11660bfa01aae805f00300014bcb5d2985b6;p=kivitendo-erp.git diff --git a/doc/dokumentenvorlagen-und-variablen.html b/doc/dokumentenvorlagen-und-variablen.html index 697ef1890..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
  • @@ -82,7 +88,7 @@ td {
  • Variablen für die Zahlungseingänge
  • -
  • +
  • Benutzerdefinierte Kunden- und Lieferantenvariablen
  • @@ -106,23 +112,25 @@ td {
  • - Variablen in anderen Vorlagen
  • + Variablen in anderen Vorlagen + +
      +
    1. Angebote und Preisanfragen
    2. +
    3. Auftragsbestätigungen und Lieferantenaufträge
    4. +
    5. Lieferscheine (Verkauf und Einkauf)
    6. +
    7. Sammelrechnung
    8. +
    +
  • Blöcke, bedingte Anweisungen und Schleifen
      -
    1. - Der if not-Block
    2. -
    3. Der if-Block
    4. Die foreach-Schleife
    5. - -
    6. - Der pagebreak-Block
  • @@ -145,6 +153,15 @@ td { verändern.

    +

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

    +

    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 @@ -178,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

    @@ -202,7 +281,7 @@ td { äquivalente Beispiel für HTML-Dokumentenvorlagen sieht so aus:

    -

    <!-- config: tag-stye=($ $)>

    +

    <!-- config: tag-style=($ $) -->

    zum Inhaltsverzeichnis
    @@ -216,17 +295,83 @@ td { geeignet zu ersetzen: ".tex" fü LaTeX-Vorlagen und ".odt" für OpenDocument-Vorlagen.

    - +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    DateinameBedeutung
    bin_list.extLagerliste
    check.ext?
    invoice.extRechnung
    packing_list.extPackliste
    pick_list.extSammelliste
    purchase_delivery_order.extLieferschein (Einkauf)
    purcharse_order.extBestellung an Lieferanten
    request_quotation.extAnfrage an Lieferanten
    sales_delivery_order.extLieferschein (Verkauf)
    sales_order.extBestellung
    sales_quotation.extAngebot an Kunden
    zahlungserinnerung.extMahnung (Dateiname im Programm konfigurierbar)
    zahlungserinnerung_invoice.extRechnung über Mahngebühren (Dateiname im Programm konfigurierbar)
    +

    + + 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
    @@ -235,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:

    @@ -253,6 +449,10 @@ td { bank_code Bankleitzahl + + bic + Bank-Identifikations-Code (Bank Identifier Code, BIC) + business Kunden-/Lieferantentyp @@ -337,6 +537,10 @@ td { homepage Homepage + + iban + Internationale Kontonummer (International Bank Account Number, IBAN) + language Sprache @@ -345,6 +549,10 @@ td { name Firmenname + + payment_description + Name der Zahlart + payment_terms Zahlungskonditionen @@ -416,6 +624,11 @@ td { taxnumber Steuernummer + + ustid + Umsatzsteuer-Identifikationsnummer + + vendoremail Email des Lieferanten; nur für Lieferanten @@ -505,7 +718,7 @@ td {

    - Informationen über den Verkäfer (nur bei Verkaufsmasken):

    + Informationen über den Verkäufer (nur bei Verkaufsmasken):

    @@ -617,6 +830,10 @@ td { + + + + @@ -645,6 +862,10 @@ td { + + + + @@ -666,15 +887,9 @@ td { - + - - - - @@ -696,10 +911,6 @@ td {

    globalprojectnumber Projektnummer des ganzen Beleges
    globalprojectdescriptionProjekbeschreibung des ganzen Beleges
    intnotes Interne Bemerkungenordnumber Auftragsnummer, wenn die Rechnung aus einem Auftrag erstellt wurde
    payment_descriptionName der Zahlart
    payment_terms ZahlungskonditionenTransportmittel
    subtotalsubtotal[_nofmt] Zwischensumme aller Posten ohne Steuern
    sumcarriedforwardZwischensumme aller bisher ausgegebenen Posten. Sollte nur in einem - - pagebreak-Block verwendet werden.
    total Restsumme der Rechnung (Summe abzüglich bereits bezahlter Posten)
    - - - - @@ -709,17 +920,49 @@ td { - + - + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + @@ -753,7 +996,11 @@ td { - + + + + + @@ -765,13 +1012,17 @@ td { - + + + + + @@ -780,6 +1031,30 @@ td { + + + + +
    VariablennameBedeutung
    assemblyErzeugnis
    bin StellageArtikelbeschreibung
    discountdiscount[_nofmt] Rabatt als Betrag
    linetotaldiscount_sub[_nofmt]Zwischensumme mit Rabatt
    drawingZeichnung
    eanEAN-Code
    imageGrafik
    linetotal[_nofmt] Zeilensumme (Anzahl * Einzelpreis)
    netpricelongdescriptionLangtext
    microficheMikrofilm
    netprice[_nofmt] Nettopreis
    nodiscount_linetotal[_nofmt]Zeilensumme ohne Rabatt
    nodiscount_sub[_nofmt]Zwischensumme ohne Rabatt
    number ArtikelnummerProjektnummer
    qtyprojectdescriptionProjektbeschreibung
    qty[_nofmt] Anzahl
    Position auf der Rechnung (1, 2, 3...)
    sellpricesellprice[_nofmt] Verkaufspreis
    serialnumber Seriennummer
    tax_rateSteuersatz
    transdate_oe Auftragsdatum des Originalauftrags, wenn die Rechnung aus einem Sammelauftrag erstellt wurdeunit Einheit
    weightGewicht
    +

    + +

    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:

    + +

    + + + + + + + + + +
    VariablennameBedeutung
    makeLieferant
    modelLieferantenartikelnummer

    @@ -812,7 +1087,7 @@ td {

    -

    +

    Benutzerdefinierte Kunden- und Lieferantenvariablen:

    @@ -868,6 +1143,10 @@ td { dunning_duedate Fälligkeitsdatum für diese Mahhnung + + dunning_id + Mahnungsnummer + fee Kummulative Mahngebühren @@ -945,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) +

    @@ -1014,6 +1298,197 @@ td { 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.

    + +

    Angebote und Preisanfragen

    + +

    + + + + + + + + + + + + + + +
    VariablennameBedeutung
    quonumberAngebots- bzw. Anfragenummer
    reqdateGültigkeitsdatum (bei Angeboten) bzw. Lieferdatum (bei Preisanfragen)
    transdateAngebots- bzw. Anfragedatum
    +

    + +

    Auftragsbestätigungen und Lieferantenaufträge

    + +

    + + + + + + + + + + + + + + +
    VariablennameBedeutung
    ordnumberAuftragsnummer
    reqdateLieferdatum
    transdateAuftragsdatum
    +

    + +

    Lieferscheine (Verkauf und Einkauf)

    + +

    + + + + + + + + + + + + + + +
    VariablennameBedeutung
    cusordnumberBestellnummer des Kunden (im Verkauf) bzw. Bestellnummer des Lieferanten (im Einkauf)
    donumberLieferscheinnummer
    transdateLieferscheindatum
    +

    + +

    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 + Lagerplatz sie eingelagert wurden. Diese müssen mittels + einer foreach-Schleife ausgegeben werden. Diese + Variablen sind:

    + +

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    VariablennameBedeutung
    si_binLagerplatz
    si_chargenumberChargennummer
    si_bestbeforeMindesthaltbarkeit
    si_numberArtikelnummer
    si_qtyAnzahl bzw. Menge
    si_runningnumberPositionsnummer (1, 2, 3 etc)
    si_unitEinheit
    si_warehouseLager
    +

    + +

    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

    @@ -1021,35 +1496,77 @@ td {

    Blöcke, bedingte Anweisungen und Schleifen

    -

    Der Parser kennt neben den Variablen einige weitere Konstrukte, die - gesondert behandelt werden. Diese sind wie Variablennamen in spezieller - Weise markiert: <%anweisung%>

    - -

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

    +

    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"%>.

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

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

    Die foreach-Schleife

    <%foreach variablenname%>
    ...
    - <%end>

    + <%end%>

    Fügt die Zeilen zwischen den beiden Anweisungen so oft ein, wie das Perl-Array der Variablen "variablenname" Elemente enthät. Dieses @@ -1067,56 +1584,15 @@ td { Artikelnummer: <%number%>
    Beschreibung: <%description%>
    ...
    - <%end>

    + <%end%>

    Besonderheit in OpenDocument-Vorlagen: Tritt ein - <foreach>-Block innerhalb einer Tabellenzelle + <%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> + 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

    @@ -1159,18 +1635,22 @@ 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 - <foreach...>-Schleifen. Weiterhin benötigt er kein - Endtag.

    + 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