Skip to main content

Abfrage-/Funktions-Logik für verschiedene Vorlagentypen

|   Vorlagen

In diesem Artikel finden Sie Informationen zur Abfrage-/Funktions-Logik für Mail-Vorlagen, Rechnungen, Lieferscheine und Druck-Vorlagen. Mit der Abfrage-Logik haben Sie die Möglichkeit, in diesen Vorlagentypen auf bestimmte Variablen zu reagieren.

if-else-Abfrage

Durch die if-else-Abfrage ist es möglich, z.B. die Standard-E-Mail-Vorlagen automatisch für jeden Verkauf individuell anzupassen und so dem Kunden eine "maßgeschneiderte" E-Mail zukommen zu lassen. Der Kunde bekommt somit in der Mail nur das zu sehen, was für ihn relevant ist. So erhält der Kunde keine unnötig lange E-Mail, in der alle Eventualitäten beschrieben sein müssen und er sich die für ihn relevante Information herauspicken muss. Dies erleichtert die Verkaufsabwicklung und spart Zeit.

Ein Beispiel? In den E-Mail-Vorlagen kann das Lieferland als if-else-Abfrage hinterlegt werden. Ist das Lieferland z.B. Frankreich, können Sie über diese Abfrage den E-Mail-Text auf Französisch hinterlegen. So können Sie mit beliebig vielen Lieferländern und den entsprechenden Sprachen verfahren.

Durch die zusätzlichen Funktionen "calcnum" und "calcdate" können in den E-Mail-Vorlagen zusätzlich Zahlen (z.B. Ware + Versandkosten) und auch ein Datum (z.B. Zahlung bis zum xx.xx.2017) berechnet werden.

Syntax der Abfrage

Die Syntax sieht folgendermaßen aus:

<#if(Wert1|Operator|Wert2)#>
...
<#else#>
...
<#endif#>


Falls in einem der Werte ein | (Pipe) vorkommt, müssen Sie anstelle des Pipe zur Trennung in der Abfrage ein "," (Komma) nutzen.
Das sieht dann so aus:
<#if(Wert1,Operator,Wert2)#>
...

 Innerhalb einer Vorlage darf nur ein Trennzeichen für die Operatoren verwendet werden, also entweder | (Pipe) oder Komma.

Operatoren

Die möglichen Operatoren sind:

=......................(ist gleich)
<>....................(ist ungleich)
<......................(ist kleiner als)
<=....................(ist kleiner, gleich als)
>......................(ist größer als)
>=....................(ist größer, gleich)
contains...........(enthält, ist im Wort enthalten)

Beispiele für die Anwendung von Operatoren und der korrekten Syntax

<#if(#portal_name#|=|Amazon-FBA)#>

     Vielen Dank für Ihren Einkauf bei uns

<#else#>

     Bitte überweisen Sie den Betrag auf das untenstehende Konto

<#endif#>

---

<#if(#payment#|=|überweisung)#>

     Dieser Kauf ist eine Überweisung

<#else#>

     Dieser Kauf ist keine Überweisung

<#endif#>

---

<#if(#payment_date#|=|00.00.0000)#>

     Dieser Kauf ist noch nicht bezahlt

<#else#>

     Dieser Kauf ist am (#payment_date#) bezahlt worden

<#endif#>

---

<#if(#buyers_email#|contains|aol)#>

     Wir bieten allen AOL-Kunden einen Sonderrabatt an

<#endif#>

---

<#if(#total#|<|0)#>

    RECHNUNGSKORREKTUR oder  KORREKTURRECHNUNG (bis 08/2013: Gutschrift)

<#else#>

    RECHNUNG 

<#endif#> Nr. 2013-#bill_nr#


---

calcdays-Funktion

Calcdays berechnet die Tage zwischen zwei Datumsangaben (Daten). Nur negative Ergebnisse werden mit einem Vorzeichen angezeigt.

Der Aufruf sieht folgendermaßen aus:

<#calcdays(Datum1,Datum2)#> oder <#calcdays(Datum1|Datum2)#>

Datum2 wird von Datum1 abgezogen.

Datum1 und Datum2 müssen folgendes Format haben: dd.mm.yyyy. Es können also auch alle Datumsplatzhalter genutzt werden. 

Wenn eines der Daten ungültig ist, kann keine Berechnung stattfinden und es wird die Abfrage gegen "nichts" ersetzt. Ein Fehler wäre aufgrund der Automatik nicht zielführend.

Es können beliebig viele calcdays im Text sein.

<#calcdays(21.05.2017|24.12.2017)#> Tage

Ausgabe: 217 Tage

<#if(#payment_date#|=|00.00.0000)#>Zahlung nach <#calcdays(#bill_date#|#date#)#> Tagen (Stand: #date#) nach Rechnungsstellung vom #delivery_date# noch ausstehend.<#endif#>

Ausgabe wenn bisher noch keine Zahlung erfolgte: "Zahlung nach 51 Tagen (Stand: 29.06.2017) nach Rechnungsstellung vom 16.05.2017 noch ausstehend."

calcnum-Funktion

Calcnum ist zur Berechnung von Zahlen mit Angabe der Nachkommastellen. Bei sämtlichen Zahlen mit Nachkommastellen ist der Punkt als Trennzeichen zu wählen.

<#calcnum(Zahl|Operator|Zahl|Nachkommastellen)#>

Die möglichen Operatoren sind:

+...................addieren

-....................subtrahieren

*....................multiplizieren

/.....................dividieren 

 

Ein Beispiel

<#calcnum(#sum#|+|#shipping#|2)#> 

Gesamtartikelpreis + Versandkosten

calcdate-Funktion

calcdate dient der Berechnung eines Datums.

<#calcdate(Datum|Operator|Zahl)#>

Die möglichen Operatoren sind:

+...................addieren

-....................subtrahieren

 

Beispiel:

<#calcdate(#payment_date#|+|7)#>

Bezahldatum + 7 Tage

Weitere Funktionen für E-Mail-Vorlagen

Weiterhin gibt es auch andere Platzhalter für die Mailvorlagen:

- #bill_date#....................................Rechnungsdatum
- #payment_date#...........................Bezahldatum
- #pack_date#..................................Packdatum
- #delivery_date#.............................Lieferdatum
- #date#...........................................aktuelles Datum
- #portal_name#.........................................Verkaufsportal
- #bill_id#.........................................Rechnungsnummer

 Der Platzhalter #payment# kann Folgendes sein:

- Überweisung
- PayPal
- Sofortüberweisung.de
- Vorkasse
- Rechnung
- Kreditkarte
- Barzahlung
- Lastschrift
- Scheck
- Nachnahme

Datumsvariablen wie #payment_date# oder #delivery_date# sind nie leer. Wenn kein Datum enthalten ist, so liefert DreamRobot dies als 00.00.0000. Wir bitten, dies bei der Abfrage berücksichtigen.

urlencode-Funktion

urlencode ist zur Codierung von Werten, z.B. um diese in Links nutzen zu können.

<#urlencode(Wert)#>

Als "Wert" können natürlich auch Platzhalter genutzt werden. Ein Beispiel:

<#urlencode(#bill_nr#)#>

base64_encode-Funktion

base64_encode ist zur Base64-Codierung von Werten, z.B. um diese in Links nutzen zu können.

<#base64_encode(Wert)#>

Alias: <#b64_enc(Wert)#> (Aufgrund des Sicherheits-Proxy kann es vorkommen, dass base64_encode beim Speichern der Vorlage geblockt wird. In dem Fall kann das Alias genutzt werden.)

Als "Wert" können natürlich auch Platzhalter genutzt werden. Beispiel:

<#base64_encode(#bill_nr#)#>
<#b64_enc(#bill_nr#)#>

sha1_encode-Funktion

sha1_encode dient der SHA1-Codierung von Werten, z.B. um diese in Links nutzen zu können.

<#sha1_encode(Wert)#>

Als "Wert" können natürlich auch Platzhalter genutzt werden. Ein Beispiel:

<#sha1_encode(#bill_nr#)#>

replace-Funktion

Mit der replace-Funktion können Text-Bestandteile ausgetauscht werden, z.B. um Trennzeichen in Zeilenumbrüche zu ändern.

<#replace(Suche|Ersetze|Text)#>

Als "Text" können natürlich auch Platzhalter genutzt werden.


 Falls HTML-Code eingesetzt werden soll, so wie der Zeilenumbruch im Beispiel unten, muss die komplette Abfragelogik in der Quellcode-Ansicht eingefügt werden. Die Editor-Ansicht wandelt den HTML-Code um und verhindert damit das gewünschte Ergebnis. 

Beispiel, in dem ";" durch Zeilenumbruch ersetzt werden soll:
<#replace(;|<br />|#delivery_id#)#> 

So wird aus 
Paket-Ident-Nr.: a1234;b2345;c3456;d4567 

unterteilt auf Zeilen:
Paket-Ident-Nr.: a1234
b2345
c3456
d4567

switch-Funktion

Switch startet mit einem <#switch (wert). Danach geht es weiter mit <#case (Operator,Wert): Text der da erscheinen soll #>

Der Operator kann folgende Werte enthalten: =,<>,<,<=,>=,> und CONTAINS.

Der Wert kann eine Zahlenfolge oder auch ein Text sein. (Bei Text werden nur die folgenden Operator verglichen: =,<> und CONTAINS).

Es kann 1:n cases geben.

Optional kann <#default (): Text der sonstigen Fall angezeigt werden soll #> angegeben werden. Dieses muss am Ende stehen.

Hinter den cases oder dem default steht dann der Text oder der Platzhalter oder was auch immer.

Abgeschlossen wird das ganze mit einem "switch#>".

 Es können beliebig viele Switches im Text verwendet werden, jedoch nicht switch in switch. Anders als bei PHP muss kein "break;" angegeben werden, denn dies geschieht immer automatisch.

Es ist auch nicht möglich, cases mit einem Semikolon zu trennen. Jeder case ist für sich einzeln. Verschachtelte switches sind nicht vorgesehen.

Beispiel:

<#switch (#total#)
<#case(=,200):genau 200 Euro Gesamtsumme #>
<#case(<,200):weniger als 200 Euro Gesamtsumme #>
<#default (): bin nix von allen #>
switch#>