Formatkonfiguration der Tourenliste
Mithilfe einer Maske, die im Admin für einzelne Displays definiert wird, kann man den Inhalt bei jeder Tour/jedem Auftrag in der Übersichtsliste und in der Detailansicht vielfältig gestalten. Es gibt drei frei definierbare Felder, die jeweils eine Maske bekommen können. Es ist vollkommen frei, nur ein Feld oder mehrere mit einer Maske zu definieren. Der Unterschied zwischen der ersten beiden Feldern (Titel, Untertitel) besteht darin, dass, wenn beide definiert sind, das erste ein bisschen prominenter erscheint als das zweite (mit einer größeren Schriftart). Ist dagegen nur eins von beiden Feldern definiert (egal welches), erscheint es immer an der prominentesten Stelle. Das dritte Feld bezieht sich auf die Überschriften auf der Ziel-Ebene.

Im Bild oben ist ein Beispiel, wo das erste Feld die Ortschaften beim Tour-Start und dem Tour-Stopp zeigt und das zweite Feld die entsprechenden Kontaktdaten mit Angaben zu der Anzahl der Sendungen an jeweiligen Zielen zeigt.

Hier im Bild oben ist ein Beispiel, das komplexer ist und auch HTML-Formatierung beinhaltet.

Im Admin (Bild oben) definiert man diese Masken unter "Display" im Tab "Aufträge".
Syntax
Eine Maske besteht aus einer oder mehreren Angaben zu den gewünschten Datenfeldern aus einer Tour/einem Auftrag. Die allgemeine Syntax:
Ein Datenfeld ist durch ein Schlüsselwort definiert. Außerdem kann fast jedes Datenfeld parametrisiert werden. Mit zusätzlichen Parametern lässt sich ein Datenfeld präzise adressieren und mit freien Texten umrahmen. Ohne Parametern versteht sich ein Datenfeld immer aus einem ersten Ziel in einer Tour (für Ziel-Felder) und aus einer ersten Sendung in einem Ziel (für Sendung-Felder).
Außerdem kann man Zahl-basierte Datenfelder mit einem Ausgabenformat versehen, um die Darstellung von Zahlen zu präzisieren.
$float{${Datenfeld};Format}
$double{${Datenfeld};Format}
Das Format versteht sich als Standardformat in einer printf-Funktion (C++, Java etc.).
Jedes Datenfeld (mit einigen Ausnahmen) aus einer Tour/einem Auftrag kann in einer Maske abgebildet werden. Hier ist die Liste mit allen möglichen Datenfeldern:
| Schlüsselwort | Bedeutung |
| TourChildrenCount | Die Anzahl aller Ziele. |
| TourNumber | Text, Tour-Nummer |
| TourDescription | Text, Tour-Beschreibung |
| OrderNumber | Text, Auftragsnummer |
| OrderDescription | Text, Auftragsbeschreibung |
| OrderName | Text, Kontaktname aus dem Auftrag |
| OrderCity | Text, Stadt aus dem Auftrag |
| OrderStreet | Text, Straße aus dem Auftrag |
| OrderCountry | Text, Land aus dem Auftrag |
| OrderZipCode | Text, PLZ aus dem Auftrag |
| OrderHouseNumber | Text, Hausnummer aus dem Auftrag |
| OrderContact | Text, Kontaktdaten aus dem Auftrag |
| DestinationChildrenCount | Die Anzahl aller Sendungen im aktuellen Ziel. |
| DestinationNumber | Text, Nummer aus dem Ziel |
| DestinationDescription | Text, Beschreibung aus dem Ziel |
| DestinationPosition | Zahl, Position des Ziels in der Tour: kann mit "int" formatiert werden |
| ShipmentNumber | Text, Nummer der Sendung |
| ShipmentDescription | Text, Beschreibung der Sendung |
| ShipmentPosition | Zahl, Position der Sendung im Ziel: kann mit "int" formatiert werden |
| ShipmentAction | Text, Aktion der Sendung (Beladen, Entladen oder Dienstleistung) |
| ShipmentPackageCount | Zahl, die Anzahl der Pakete in der Sendung: kann mit "double" oder "float" formatiert werden |
| ShipmentUnit | Text, Einheit aus der Sendung |
| ShipmentName1 | Text, Name 1 aus der Sendung |
| ShipmentName2 | Text, Name 2 aus der Sendung |
| ShipmentContact | Text, Kontaktdaten aus der Sendung |
| ShipmentStreet | Text, Straße aus der Sendung |
| ShipmentHouseNumber | Text, Hausnummer aus der Sendung |
| ShipmentZipCode | Text, PLZ aus der Sendung |
| ShipmentCity | Text, Stadt aus der Sendung |
| ShipmentCountry | Text, Land aus der Sendung |
| Destinations | Bündelungseinheit für die Zielebene. Mithilfe dieses Schlüsselwortes kann man einen Bereich von beliebig adressierten Zielen gleichzeitig an mehreren Datenfeldern anwenden, wobei die Ausgabe pro jedes Ziel "gebündelt" aus diesen Datenfeldern besteht. Kombinierbar nur mit den Suffixen 'scope', 'ltext' oder 'rtext'. |
| Shipments | Bündelungseinheit für die Sendungsebene. Mithilfe dieses Schlüsselwortes kann man einen Bereich von beliebig adressierten Sendungen gleichzeitig an mehreren Datenfeldern anwenden, wobei die Ausgabe pro jede Sendung "gebündelt" aus diesen Datenfeldern besteht. Kombinierbar nur mit den Suffixen 'scope', 'ltext' oder 'rtext'. |
| Spezielle Schlüsselwörter | Bedeutung |
| ShipmentCounting | Erzeugt keine Ausgabe. Das ist ein Marker, der definiert, wie Sendungen gruppiert werden, um daraus eine Gesamtzahl der Sendungen zu ermitteln. Kombinierbar nur mit dem Suffix 'field'. Die Anzahl der Sendungen ist auf jeder Tour-Überschrift zu sehen. Die Ausgabe beim 'DestinationChildrenCount' wird dadurch auch u.U. beeinflusst. Für Details siehe unten. |
Adressierung.
Allgemeine Syntax:
${Zieldatenfeld[<Zieladresse>]...}
${Sendungsdatenfeld[<Zieladresse>, <Sendungsadresse>]...}
Jedes Datenfeld (und auch jede Bündelungseinheit) kann eine dedizierte Adressierung zu den gewünschten Tour-Elementen enthalten. Die Adressierung wird mithilfe Eckklammern - [ ] - geschrieben, ähnlich wie es in verschiedenen Programmiersprachen ein Array adressiert wird. Alle Ziel-Datenfelder können naturgemäß nur auf die Zielebene adressieren, somit schreibt man in den Klammern nur einen Parameter, z.B.: [first2]. Alle Sendungsfelder können sowohl Elemente aus der Zielebene als auch aus der Sendungsebene ansprechen. Daher schreibt man in den Klammern zwei durch Komma getrennte Parameter, z.B.: [first2, last-1], wobei an der ersten Stelle Ziele und auf der zweiten Stelle Sendungen andressiert werden.
Es ist zulässig, die Adressierungsstellen leer lassen, wodurch eine Standardadressierung greift und immer das erste Element aus der entsprechende Ebene bedeutet. Für die Sendungsdatenfelder muss man aber immer zwei Adressierungsstellen definieren, also Komma immer angeben, z.B: [ , first2].
| Typ | Bedeutung | Argumente | Beispiel |
first last | Definiert die genaue Position eines Elementes aus der Tour:
| +/-N wo N ist eine Zahl, die relative Position des Elementes bestimmt:
Wenn nicht angegeben: versteht sich immer als first. |
|
| range | Das Datenfeld wird in einem angegebenen Bereich bei allen Zielen wiederholt. Die Suffix "range" ersetzt die Adressierung eines Ziels (sowohl bei Ziel- als auch bei Sendungsfeldern). | +N-M wo N ist eine positive Zahl, die den Abstand zum ersten Element bestimmt und M ist eine negative Zahl, die den Abstand zum letzten Element festlegt. | ${ShipmentName1[range1-1, first]} Zeigt den Sendungsnamen aus allen ersten Sendungen bei Zielen, die zwischen dem zweiten und dem vorletzten Ziel liegen. |
Parameter für die Datenfelder.
| Suffix | Bedeutung | Argumente | Beispiel |
| skip | Wenn dieses Element nicht ermittelbar ist, werden alle Ausgaben bis zum nächsten gültigen Tour-Element übersprungen. | Ein beliebiger Text. Die Zeichen '.' und '}' sind nicht erlaubt. |
|
| count | Kombinierbar mit zwei Feldnamen: TourChildrenCount oder DestinationChildrenCount. Gibt die Anzahl der Kinderelemente bei der übergeordneten Stelle.
Wenn die berechnete Zahl eine 0 oder negativ ist, erscheint keine Anzeige. | -N wo N ist eine negative Zahl, die von der Gesamtzahl subtrahiert wird. |
|
| ltext | Ein beliebiger Text links vom eigentlichen Datenfeld. | Ohne Text macht dieses Suffix keinen Sinn. Die Zeichen '.' und '}' sind nicht erlaubt. | ${TourChildrenCount.count-2.ltext Dazwischen: .rtext Ziele |
| rtext | Ein beliebiger Text rechts vom eigentlichen Datenfeld. | Ohne Text macht dieses Suffix keinen Sinn. Die Zeichen '.' und '}' sind nicht erlaubt. | |
| field | Nur in Verbindung mit dem Schlüssel 'ShipmentCounting'. Deklariert einen oder mehrere Namen einer Eigenschaft aus einer Sendung, um anhand dessen Sendungen zu gruppieren. Die Platzierung des Schlüsselwortes beeinflusst den Wirkungsbereich:
| Der Name einer Eigenschaft aus einer Sendung:
Mehrere Argumente können sowohl mit einem Suffix, getrennt durch ein Leerzeichen, oder in mehreren Schlüsselwörtern stehen. Die unten aufgezeichneten Sequenzen sind absolut identisch in der Auswirkung:
| ${ShipmentCounting.field number} Alle Sendungen werden über die Eigenschaft "number" gruppiert. Sendungen mit identischen Inhalten werden als eine Einheit gezählt. Angenommen es gibt 5 physikalische Sendungen in einer Tour: 1. Sendung, number: Custom1 2. Sendung, number: Custom1 3. Sendung, number: Custom1 4. Sendung, number: Custom2 5. Sendung, number: Custom2 In dem Fall, wenn die Maske ${ShipmentCounting.field number} definiert wird, zeigt das Label im Tour-Kopf: Sendungen: 2. |
| scope | Nur in Verbindung mit dem Schlüsselwörtern 'Destinations' oder 'Shipments'. Die Syntax:
Alle Datenfelder in dem angegebenen 'scope'-Bereich werden immer zusammen bei jedem gefundenen Tour-Element angewendet. Es ist erlaubt, in dem 'scope'-Bereich von einem 'Destinations'-Bündelungsfeld ein 'Shipments'-Bündelungsfeld zu verwenden. | ${Destinations[range0-0].scope {${Shipments[, range0-0].ltextBEGIN- .rtext -END .scope{$double{${ShipmentPackageCount};%.04f}${ShipmentUnit.ltext } / }}}} In dem o.g. Beispiel wird bei allen Zielen alle Sendungen angefragt und gebündelte Ausgaben gebildet, die aus einer Zahl und einer Einheit bestehen. |

