Ventoo Shipping veröffentlicht Integrationsereignisse, mit denen Erweiterungen in den Etiketten-Lebenszyklus eingreifen können. Alle Ereignisse werden von der Codeunit Shipping Events VTO (ID 70679804) ausgelöst und sind im AL-Code als [IntegrationEvent(false, false)] deklariert.
Lebenszyklus eines Etiketts
Beim Aufruf von Shipment Label Mgt. VTO.ProcessLabel durchläuft ein Etikett die folgenden Schritte:
-
OnBeforeProcessLabelwird ausgelöst. -
Spediteureinrichtung wird geladen und auf Aktiviert geprüft.
-
Der Konnektor validiert das Etikett (
ValidateRequest). -
OnBeforeBuildRequestPayloadwird ausgelöst. -
Der Konnektor baut das Request-Payload.
-
Der Status wird auf Gesendet gesetzt und der Datensatz committed.
-
Die Spediteur-API wird aufgerufen.
-
OnAfterParseResponsewird ausgelöst. -
Der Konnektor parst die Antwort und befüllt PDF, Tracking-Link und Transporteinheitsnummer.
-
Bei Erfolg und aktivierter Option Auto-Druck nach Erstellung wird das Etikett gedruckt.
-
OnAfterProcessLabelwird ausgelöst.
Veröffentlichte Ereignisse
OnBeforeProcessLabel
[IntegrationEvent(false, false)]
procedure OnBeforeProcessLabel(
var ShipmentLabelHeader: Record "Shipment Label Header VTO";
var IsHandled: Boolean)
Wird vor dem eigentlichen Verarbeitungsstart ausgelöst. Wenn ein Abonnent IsHandled := true setzt, übernimmt er die vollständige Verarbeitung; die Standardlogik wird übersprungen. Nützlich, um eigene Konnektoren oder Mock-Implementierungen einzuhängen.
OnBeforeBuildRequestPayload
[IntegrationEvent(false, false)]
procedure OnBeforeBuildRequestPayload(
var ShipmentLabelHeader: Record "Shipment Label Header VTO";
CarrierCode: Code[20])
Wird unmittelbar vor dem Aufruf von BuildRequestPayload ausgelöst. Erlaubt es, kurz vor dem Senden des Requests Felder am Etikettenkopf anzupassen (z. B. Custom-Felder zu setzen, die der Konnektor liest).
OnAfterParseResponse
[IntegrationEvent(false, false)]
procedure OnAfterParseResponse(
var ShipmentLabelHeader: Record "Shipment Label Header VTO";
ResponseBody: Text)
Wird ausgelöst, sobald die HTTP-Antwort vorliegt, jedoch vor dem Aufruf von ParseResponse durch den Konnektor. Damit lassen sich z. B. zusätzliche Felder aus der Antwort extrahieren oder Logs schreiben.
OnAfterProcessLabel
[IntegrationEvent(false, false)]
procedure OnAfterProcessLabel(
var ShipmentLabelHeader: Record "Shipment Label Header VTO")
Wird am Ende der Verarbeitung ausgelöst – nach Status-Update, PDF-Speicherung und optionalem Auto-Druck. Geeignet, um Folgeaktionen anzustossen (z. B. Notifikationen, Statussynchronisation mit Drittsystemen).
OnPopulateDeliveryAddress
[IntegrationEvent(false, false)]
procedure OnPopulateDeliveryAddress(
SourceDocType: Enum "Source Document Type VTO";
SourceDocNo: Code[20];
var ShipmentLabelHeader: Record "Shipment Label Header VTO")
Wird beim Vorbelegen der Lieferadresse aus einem Verkaufsauftrag oder einer gebuchten Verkaufslieferung ausgelöst. Anwendungsfall: zusätzliche Felder wie Liefertelefon, Liefer-E-Mail oder Anweisungen aus eigenen Datenstrukturen befüllen, die nicht in den Standard-Ship-to-Feldern enthalten sind.
Erweiterbarkeitspunkte
Neben den Integrationsereignissen bietet Ventoo Shipping weitere Erweiterungspunkte:
-
Spediteur-Typ-Enum (
Carrier Type VTO): Der Enum istExtensible = true. Neue Spediteure können einen eigenen Wert hinzufügen und ein eigenes Codeunit implementieren, das das InterfaceCarrier Connector VTOerfüllt. -
Carrier Connector VTO-Interface: Definiert die MethodenGetCarrierName,ValidateRequest,BuildRequestPayload,SendRequest,ParseResponse,InitCarrierMasterDataundGetPrintReportId. -
Druckberichte: Spediteurspezifische Berichte können im Bereich
70679801–70679819registriert werden. Der Event-SubscriberShip Label Print Events VTO(OnAfterDocumentReady) ersetzt deren Ausgabe durch das Spediteur-PDF. -
Source Document Type VTO-Enum: EbenfallsExtensible = true. Eigene Quelldokumenttypen (z. B. Serviceauftrag) lassen sich ergänzen, indem ein neuer Enum-Wert und die zugehörige Aufrufroutine (analog zuCreateLabelsFromSalesOrder) implementiert werden.