Eingabeobjekt anlegen
Das Eingabeobjekt ist das Formular, das für jede Kostenberechnung ausgefüllt wird. Es besteht aus einem Hauptobjekt (der Hafenvorlage), das mit mehreren Unterobjekten verknüpft ist (Lotsen, Schlepper, hafenspezifische Eingaben). Gebaut wird alles unter Object definitions.
Bevor Sie anfangen
Sie brauchen das Recht Custom data admin (custom_data.custom_data_admin). Ohne das erscheint Object definitions im Admin-Bereich nicht.
Schritt 1 — Das Hafenobjekt anlegen
Gehen Sie zu Navigation → Admin → Cost Calculations → Object definitions (Route
/cost-definitions).Klicken Sie auf New — der Dialog Object definition öffnet sich.
Tragen Sie ein:
Feld Was Sie eintragen Name Lesbarer Hafenname, z. B. Den HelderSystem code pcc<Hafen>ohne Leerzeichen, z. B.pccDenHelder. Nur Buchstaben, Ziffern und Unterstriche.Application area Cost calculation Available Einschalten Klicken Sie auf Save.
Der System code ist die Identität des Hafens in der gesamten Einrichtung. Jede Tarifgruppe, die Sie später anlegen, muss genau diesen Code nennen. Nach dem Speichern ist er gesperrt und lässt sich nicht mehr ändern.
Das neue Objekt erscheint in der Liste. Ein Klick öffnet die Seite Object definition details.
Schritt 2 — Die Eingabeabschnitte anlegen
Abschnitte sind Felder vom Typ Linked object am Hauptobjekt des Hafens. Jeder Abschnitt wird zu einem Reiter (oder zur obersten Karte) auf dem Berechnungsformular.
Der Schiffsabschnitt (die Wurzelgruppe)
Legen Sie das erste verknüpfte Feld für das Schiff an:
- Klicken Sie auf der Detailseite in der Karte Field definitions auf Add.
- Setzen Sie Field type auf
Linked object. - Setzen Sie Object to link auf die nautische Schiffszuordnung.
- Lassen Sie Group vollständig leer.
- Setzen Sie Visibility auf die erste Option der Auswahlliste (Public).
- Klicken Sie auf Save.
1. Die Group des Schiffsfeldes muss leer sein. Nur mit leerer Group wird dieses Feld zur Gruppe _root, die der Rechner braucht. Hat kein Feld eine leere Group, wirft der Rechner „Cannot convert undefined or null to object“ und arbeitet nicht mehr.
2. Die Visibility jedes Feldes muss Public sein. In der aktuellen App fehlen die Beschriftungen der Auswahlliste Visibility — die Optionen erscheinen unbeschriftet. Wählen Sie immer die erste, oberste Option, das ist Public. Steht ein Feld auf der zweiten oder dritten Option (Private oder Hidden), lässt der Rechner es weg. Sind alle Felder eines Abschnitts nicht Public, kommt es zum Absturz von oben.
Hafenspezifische Abschnitte (Lotsen, Schlepper, Sonstiges)
Für jeden weiteren Abschnitt — etwa Lotsen einwärts, Lotsen auswärts, Schlepper und einen hafenspezifischen Abschnitt:
- Klicken Sie erneut auf Add.
- Setzen Sie Field type auf
Linked object. - Setzen Sie Object to link auf das passende Unterobjekt (die Unterobjekte legen Sie zuerst an — siehe Schritt 4).
- Tragen Sie einen Namen unter Group ein, z. B.
Inbound,Outbound,Basis information. Er wird zur Reiterüberschrift. - Setzen Sie Visibility auf die erste Option (Public).
- Klicken Sie auf Save.
Schritt 3 — Die Felder anlegen
Die Felder der Unterobjekte sind die eigentlichen Eingaben (GT, Tiefgang, Anzahl Schlepper, Schiffstyp …). Sie legen sie auf der Detailseite jedes Unterobjekts über Add an.
Feldtypen, die Sie brauchen
| Feldtyp | Wofür |
|---|---|
| Integer | Ganze Zahlen: GT, LOA, Tiefgang (in dm), Anzahl Schlepper |
| Decimal | Dezimalzahlen: berechnete Produkte wie m²×Tage |
| Boolean | Ja/Nein-Kennzeichen, etwa „ISPS anwendbar“ |
| List | Auswahl aus einer festen Menge, etwa Schiffstyp, Anlaufzeitraum, Ort |
| Single line text | Freitexteingaben, wo nötig |
| Linked object | Abschnitte, die auf ein anderes Objekt verweisen (am Hauptobjekt — siehe Schritt 2) |
Listenfelder und ihre Keys
Legen Sie ein Feld vom Typ List an, definieren Sie die Optionen in der Tabelle List items. Jede Zeile hat ein Label (was der Benutzer sieht) und einen Key (eine Codezeichenfolge):
- Der Key ist das, worauf sich Tarifbedingungen später beziehen. Wählen Sie kurze, stabile Codes — zum Beispiel
tanker_lng,bulkcarrier,cruise,day,night. - Sobald Tarifbedingungen einen Key nennen, lässt er sich nicht mehr ändern. Legen Sie die Codes also fest, bevor Sie mit den Tarifen anfangen.
- Setzen Sie das Häkchen bei Must match, damit niemand freien Text eintippen kann.
Visibility und Pflichtfelder
Setzen Sie Visibility bei jedem Feld auf die erste Option (Public) — sowohl bei den verknüpften Abschnittsfeldern am Hauptobjekt als auch bei jedem einzelnen Feld in jedem Unterobjekt. Was sonst passiert, steht in der Warnung oben.
Markieren Sie Felder als Required, wo es sinnvoll ist, damit niemand wichtige Eingaben leer lässt und dann auf Calculate klickt.
Schritt 4 — Unterobjekte für Lotsen und Schlepper anlegen
Unterobjekte halten die einzelnen Felder der Fachabschnitte. Legen Sie sie an, bevor Sie sie in Schritt 2 verknüpfen.
- Gehen Sie zu Object definitions und klicken Sie auf New.
- Tragen Sie einen Namen ein (z. B.
Den Helder Pilots) und einen System code (z. B.pccDenHelderPilots). - Setzen Sie Application area auf Cost definition (nicht „Cost calculation“ — das gilt nur für das Hauptobjekt).
- Klicken Sie auf Save, öffnen Sie das Unterobjekt und legen Sie seine Felder an.
Typische Felder eines Lotsen-Unterobjekts:
| Feld | Typ | Hinweise |
|---|---|---|
draft | Integer | Tatsächlicher Tiefgang in dm |
pilotQuantity | Integer | Anzahl Lotsen |
areaFrom | List | Ausgangsgebiet; die Keys werden in Gebietsbedingungen verwendet |
Ein typisches hafenspezifisches Unterobjekt (z. B. pccDenHelderPort) enthält etwa:
| Feld | Typ | Beispiel-Keys / Hinweise |
|---|---|---|
havengeldCategory | List | zeeschip, cruise, fishing |
location | List | nieuwe_diep, other |
ispsApplicable | Boolean | Ja/Nein |
callPeriod | List | day, evening, night |
Checkliste
Bevor Sie zu den Tarifen weitergehen, prüfen Sie:
- Das Hauptobjekt des Hafens existiert mit Application area = Cost calculation und Available = ein.
- Der System code folgt dem geplanten Muster (
pccDenHelder) — er lässt sich später nicht ändern. - Genau ein verknüpftes Abschnittsfeld hat eine leere Group (der Schiffsabschnitt, die Gruppe
_root). - Alle anderen verknüpften Abschnittsfelder haben einen Group-Namen (die Reiterüberschrift).
- Jedes Feld an jedem Objekt hat Visibility = Public (erste Option).
- Alle Keys der Listenfelder stehen endgültig fest.
- Die Unterobjekte (Lotsen, Schlepper, hafenspezifisch) existieren mit Application area = Cost definition.