Abfrage-Logik Teil 2, Datum und Rechenoperationen (von Sidec)

Aus DreamRobot Wiki
Wechseln zu: Navigation, Suche
Was bietet die Abfrage-Logik außerdem noch?



Wir wissen nun, dass mit den 3 Worten if, else und endif auf eine ganze
Menge abgefragt werden kann, nämlich auf praktisch alles, wozu es eine
Variable gibt. Diese Variablen finden sich bei den Vorlagen und können
auf der gleichen Seite unten per Link angezeigt werden.

Es gibt aber noch weitere Funktionen, die aus einer einfachen Abfrage-
Logik ein sehr mächtiges Tool machen, das ist die Berechnung eines
Datums in der Zukunft oder Vergangenheit und allgemeine Rechen-
operationen, beides auch sehr nützlich bei unseren Rechnungsformularen.

Beginnen wir mit dem Datum
Die Variable, die das Datum berechnen kann, heißt calcdate und wird
anstelle des if verwendet, doch ist der Aufbau genau der Gleiche
wie zu Anfang erklärt:

<#if#> wird also zu <#calcdate#> und genau wie für if muss ich hier
noch festlegen, was calcdate machen soll.
Das wird wieder über die eingefügte Klammer mitgeteilt, nämlich
(bestimmtes Datum , + oder - , Anzahl Tage)

Beispiel:
Ich will sagen -> Zahlungseingang bis zum *heute in 8 Tagen* erbeten
Ich übersetze -> Zahlungseingang bis zum <#calcdate(#date#|+|8)#> erbeten
hier wird also vom heutigen Tag ausgehend das Datum in 8 Tagen genannt.

So eine Mail kann also automatisch verschickt werden, der Kunde erhält
immer das korrekte Datum mitgeteilt. Wer automatische Mahnungen ver-
schicken lässt, kann dann einbauen "Leider ist trotz unserer Erinnerung
vom *Datum minus Zeitraum für die Auslösung der Mahnung* kein
Zahlungseingang erfolgt....".

Es fällt auf, dass bei dieser Anwendung weder else noch endif benötigt
werden, die Funktion wird also ganz alleine durch das Wort calcdate er-
füllt.

Das Ganze funktioniert auch in einer normalen Abfrage mit if, else und endif,
z.B.

Falls Vorkasse gewählt wurde -> die Zahlung soll bis heute in 8 Tagen bei mir eintreffen,
für alle anderen Zahlungsarten -> hier kommt ein anderer Text.

Übersetzung:
<#if(#payment#|=|Vorkasse)#>
die Zahlung soll bis zum <#calcdate(#date#|+|8)#> bei mir eintreffen
<#else#>
hier kommt ein anderer Text
<#endif#>

Übersetzung des Datums-Codes in verständliche Worte:

<#calcdate(#date#|+|8)#> heißt
<#Datumsberechnung(Heute|+|8 Tage)#>

Das war es dann auch schon mit dem Datum.

Ein ganz klein wenig schwieriger wird die Anwendung von Berechnungen,
da in der Klammer nun noch ein weiterer Wert dazukommt, nämlich die
Angabe der Nachkommastellen, schließlich können hier durch die nor-
malen Rechenoperationen gebrochene Zahlen herauskommen und die
müssen dann - z.B. bei Geldbeträgen - auf die 2 Nachkommastellen ge-
rundet werden oder es handelt sich vielleicht um einen Wert, der nie Nach-
kommastellen hat.

Der Code für die Ausführung von Rechenoperationen heißt calcnum und
verdrängt genau wie bei calcdate das if ->
<#calcnum#>
und genau wie bei if oder calcdate muss ich diesem Code noch mitteilen,
was er machen soll, nämlich
(Wert1 , welche Rechenoperation soll ausgeführt werden, Wert 2 , Zahl der Nachkommastellen).


Die einzusetzenden Rechenoperatoren sind
+...................addieren
-....................subtrahieren
*....................multiplizieren
/.....................dividieren



Zur Veranschaulichung nehmen wir wieder ein Beispiel her:

Ich will sagen -> Der Gesamtpreis errechnet sich aus Warenwert und Versandkosten, ergibt EUR xx,xx
Ich übersetze -> Der Gesamtpreis errechnet sich aus Warenwert und Versandkosten, ergibt EUR <#calcnum(#sum#|+|#shipping#|2)#>

Nochmal Übersetzung des Codes in verständliche Worte:

<#calcnum(#sum#|+|#shipping#|2)#> heißt
<#Rechenoperation(Warenwert|+|Versandkosten|2 Nachkommastellen)#>


Natürlich kann ich den Code für die Berechnung auch ganz wunderbar in
eine Abfrage einbauen, z.B. wenn ich Skonto gewähren will und hier brauche
ich dann auch die Datumsberechnung:

Ich will sagen -> (Falls Rechnung) Zahlziel: Zahlung ohne Abzug bis zum *Lieferdatum in 30 Tagen*
bei Zahlung bis zum *Lieferdatum in 14 Tagen* abzgl. 3% Skonto entspricht EUR *Gesamtpreis minus Skonto*

Ich übersetze -> <#if(#payment#|=|Rechnung)#>Zahlziel:
Zahlung ohne Abzug bis zum <#calcdate(#delivery_date#|+|30)#>
bei Zahlung bis zum <#calcdate(#delivery_date#|+|14)#>
abzgl. 3% Skonto entspricht EUR <#calcnum(#total#|*|0.97|2)#>
<#endif#>

Zerlegen wir den Berechnungscode noch einmal für das bessere Verständnis:

<#calcnum(#total#|*|0.97|2)#> heißt
<#Berechnung(Gesamtsumme,Rechenart Multiplikation,die zu multiplizierende Zahl|2 Nachkommastellen)#>

Ganz wichtig - die Trennung der einzelnen Schritte geschieht immer durch
ein Komma ohne Leerzeichen davor oder dahinter.
Zu berechnende Zahlen, die keine glatten Zahlen sind, werden immer mit
einem Punkt statt dem in Deutschland üblichen Komma dargestellt, ein
Komma würde zu Problemen führen.


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

Na, so schlimm war es dann doch nicht, oder?


Und nun lasst mal schön rechnen !


Viele Grüße
Sigrid

  - Anleitungen
- Abfrage-Logik Teil 1 (von Sidec)