Formatkonfiguration der Tourenliste

Zuletzt geändert von YellowFox_RD am 2025/10/30 08:37

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.

1744721474413-533.png

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.

1744787358395-981.png

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

1756797885096-805.png

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:

${Datenfeld[.Suffix[Parameter][.Suffix[...]]]}[Weitere Datenfelder]

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.

$int{${Datenfeld};Format}
$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üsselwortBedeutung
TourChildrenCountDie Anzahl aller Ziele.
TourNumberText, Tour-Nummer
TourDescriptionText, Tour-Beschreibung
OrderNumberText, Auftragsnummer
OrderDescriptionText, Auftragsbeschreibung
OrderNameText, Kontaktname aus dem Auftrag
OrderCityText, Stadt aus dem Auftrag
OrderStreetText, Straße aus dem Auftrag
OrderCountryText, Land aus dem Auftrag
OrderZipCodeText, PLZ aus dem Auftrag
OrderHouseNumberText, Hausnummer aus dem Auftrag
OrderContactText, Kontaktdaten aus dem Auftrag
DestinationChildrenCountDie Anzahl aller Sendungen im aktuellen Ziel.
DestinationNumberText, Nummer aus dem Ziel
DestinationDescriptionText, Beschreibung aus dem Ziel
DestinationPositionZahl, Position des Ziels in der Tour: kann mit "int" formatiert werden
ShipmentNumberText, Nummer der Sendung
ShipmentDescriptionText, Beschreibung der Sendung
ShipmentPositionZahl, Position der Sendung im Ziel: kann mit "int" formatiert werden
ShipmentActionText, Aktion der Sendung (Beladen, Entladen oder Dienstleistung)
ShipmentPackageCountZahl, die Anzahl der Pakete in der Sendung: kann mit "double" oder "float" formatiert werden
ShipmentUnitText, Einheit aus der Sendung
ShipmentName1Text, Name 1 aus der Sendung
ShipmentName2Text, Name 2 aus der Sendung
ShipmentContactText, Kontaktdaten aus der Sendung
ShipmentStreetText, Straße aus der Sendung
ShipmentHouseNumberText, Hausnummer aus der Sendung
ShipmentZipCodeText, PLZ aus der Sendung
ShipmentCityText, Stadt aus der Sendung
ShipmentCountryText, Land aus der Sendung
DestinationsBü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'.
ShipmentsBü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örterBedeutung
ShipmentCountingErzeugt 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].

TypBedeutungArgumenteBeispiel

first

last

Definiert die genaue Position eines Elementes aus der Tour:

  • first das erste Element bei der übergeordneten Stelle (Ziel oder Tour)
  • last das letzte Element bei der übergeordneten Stelle (Ziel oder Tour)

 

+/-N wo N ist eine Zahl, die relative Position des Elementes bestimmt:

  • first+3 das vierte Element vom Anfang
  • last-2 das vor vorletzte Element

Wenn nicht angegeben: versteht sich immer als first.

  • ${ShipmentCity[last-1, first]} Stadt aus der ersten Sendung, aus dem vorletzten Ziel.
  • ${ShipmentPackageCount[, first+1]} Anzahl von Paketen aus der zweiten Sendung, aus dem ersten Ziel.
  • ${DestinationNumber[first+2]} Die Nummer des dritten Ziels in der Tour
rangeDas 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.

SuffixBedeutungArgumenteBeispiel
skipWenn 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.
  • ${OrderContact.skip} Wenn das Element kein Auftrag ist, werden keine Ausgaben generiert.
  • ${DestinationNumber.first+1.skip keine Nummer vorhanden } Wenn das zweite Ziel keine Nummer hat, werden keine Ausgaben generiert, stattdessen erscheint der Text ' keine Nummer vorhanden '.
count

Kombinierbar mit zwei Feldnamen: TourChildrenCount oder DestinationChildrenCount.

Gibt die Anzahl der Kinderelemente bei der übergeordneten Stelle.

  • TourChildrenCount die Anzahl der Ziele in der Tour
  • DestinationChildrenCount die Anzahl der Sendungen im Ziel

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.
  • ${TourChildrenCount.count-2} die Anzahl aller Ziele minus 2
ltextEin 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 Zielethumb_down} Zeigt eine Gesamtzahl aller Ziele minus 2 und schreibt vor und nach der Zahl die entsprechenden Texte. Die Ausgabe wäre bei einer Gesamtzahl 10 für aller Ziele so: ' Dazwischen: 8 Zielethumb_down'.
rtextEin 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:

  • Im Feld "Titel" oder "Untertitel": die Anzahl aller Sendungen in einer Tour wird auf dieser Grundlage berechnet.
  • Im Feld "Ziele": nur die Anzahl in einzelnen Zielen wird nach Gruppierungen in jeweiligem Ziel berechnet. Die Gesamtzahl aller Sendungen in einer Tour bleibt unbeeinflusst.

Der Name einer Eigenschaft aus einer Sendung:

  • action
  • number
  • description
  • city
  • contact
  • country
  • housenumber
  • name1
  • name2
  • street
  • zip
  • unit

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 action}
  • ${ShipmentCounting.field number}${ShipmentCounting.field action}

${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:

  • ${Destinations[<Adressierung>].scope{<Eine beliebige Anzahl von beliebigen Datenfeldern: Ziel- oder Sendungsfelder>}}
  • ${Shipments[<Adressierung>].scope{<Eine beliebige Anzahl von beliebigen Datenfeldern: nur Sendungsfelder>}}

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.