Table of Contents

Class MovementDocumentHandler

Namespace
Zedal.Sdk.DocumentHandler
Assembly
Zedal.Sdk.dll

Stateful Handler für die Unternehmens-Seite eines einzelnen DIWASS-Bewegungsdokuments im Rahmen einer genehmigten Notifizierung (Art. 16 VO (EU) 2024/1157). Ein Handler entspricht genau einer physischen Transportbewegung.

Behördenaktionen auf Bewegungsebene (Rücknahme-Anordnung, Bewegungssignale) liegen in AuthorityMovementDocumentHandler.

public class MovementDocumentHandler : DiwassDocumentHandlerBase
Inheritance
MovementDocumentHandler
Inherited Members

Constructors

MovementDocumentHandler(ICompanyDocumentApi, IAuthorityDocumentApi, ICoreApi)

Properties

Movement

Aktueller zewass-Movement-Stand (mit ZEDAL-Ergänzungen). Wird nach jedem Set/Create/Refresh aktualisiert.

Methods

CreateMovementTemplate(MovementTemplateType)

Erstellt ein neues Bewegungsdokument-Template für eine einzelne Sendung (kein DocXml erforderlich).

GetNextSequenceNumber(string)

Ermittelt die nächste freie SequenceNumber für eine Notifizierung, indem der Transportpapier-Index (ListTransportDocuments, Filter doc.notification_id) nach allen bereits vergebenen Movement-Nummern abgefragt und deren höchstes numerisches Suffix + 1 zurückgegeben wird. Die Zählung ist pro Notifizierung (dafür der notification_id-Filter) und beginnt für jede neue Notifizierung wieder bei 1.

Übergangslösung — die Implementierung muss sich noch ändern. Für DIWASS-Movements gibt es (anders als für Notifizierungen mit FetchNumbers/NumberType.DiwassNotification) noch keinen serverseitigen Reservierungsweg; bis ein solcher existiert (z.B. ein DiwassWasteMovement-NumberType), bestimmt der Client die Nummer selbst über diesen Index-Lookup. Rennbedingungen bei echt parallelem Anlegen auf derselben Notifizierung sind damit nicht ausgeschlossen.

Die Transportpapiernummer im Index hat das Format <NotificationId>.<sequenz> (z.B. DE0126013235i.00002, max. 5-stellig, ohne MOV); ein etwaiges MOV-Suffix der DIWASS-MovementId wird beim Parsen toleriert.

LoadFromZedalByMovementId(string)

Lädt das ZEDAL-Doc zu einer fachlichen DIWASS-MovementId (z.B. DE0126005197i.000001MOV). Im DocumentEntry-Index liegt die MovementId unter sequence_number. Pro MovementId existiert genau ein ZEDAL-Doc; sämtliche Phasen (Announcement, CarrierTransport, ConsigneeReception, FacilityReception, FacilityCompletion) leben als BxA-Blocks darin.

NextSequenceFrom(IEnumerable<string>)

Reine Kernlogik hinter GetNextSequenceNumber(string): aus den bereits vergebenen Transportpapiernummern das höchste numerische Sequenz-Suffix ermitteln und + 1 zurückgeben. Leere/nicht-parsbare Einträge werden ignoriert; ohne jeden Treffer ist das Ergebnis 1.

Refresh()

Lädt den aktuellen Dokumentstatus neu von der BXA API, ohne das XML zu verändern. Subklassen rufen den passenden typisierten GetNotification/GetAnnex7/GetMovement-Endpoint auf, pflegen ihre typisierte Property und delegieren die Common-Felder an UpdateCommonState(DiwassOperationResult).

SetCarrierTransport(CarrierTransportDocumentType)

Erfasst die Transportdaten des Trägers für diese Sendung (Abfahrtsdatum, Route, Fahrzeugdaten, Trägerangaben).

SetConsigneeReception(ConsigneeReceptionDocumentType)

Reicht die Empfangsbestätigung des Empfängers ein (innerhalb von 3 Werktagen nach Eingang der Abfälle).

SetFacilityCompletion(FacilityCompletionDocumentType)

Reicht die Abschluss-Bescheinigung der Anlage nach erfolgter Verwertung/Entsorgung ein (innerhalb von 30 Tagen nach Abschluss, spätestens ein Kalenderjahr nach Eingang).

SetFacilityReception(FacilityReceptionDocumentType)

Reicht die Empfangsbestätigung der Anlage ein, wenn Empfänger und Anlage verschieden sind (innerhalb von 3 Werktagen nach Eingang der Abfälle).

SetMovementTakeBack(MovementTakeBackDocumentType)

Notifier-seitige Take-Back-Anordnung auf dem Movement (Rücknahme, typischerweise nach Facility-Rejection). Permission-Matrix erlaubt die Aktion auch dem Notifizierer; die zugrundeliegende BxA-RPC liegt aktuell nur auf der IAuthorityDocumentApi — bis die Company-API ein eigenes Gegenstück bekommt (siehe Ticket zedal-grpc-apis), delegieren wir hier auf denselben Endpoint. Übergangslösung analog zu SubmitNotificationSignal(NotificationSignalDocumentType).

SetMovementTemplate(MovementTemplateType)

Aktualisiert ein bestehendes Bewegungsdokument-Template (z.B. Korrekturen vor Transportbeginn).

SubmitMovementSignal(MovementSignalDocumentType)

Notifier-seitiges Movement-Signal — typischerweise MovementCancelled (Stornierung einer laufenden Bewegung durch den Notifizierer). Lifecycle- Signale auf Notifizierungsebene (ProperlyCarriedOut, ProperlyCompleted) gehören dagegen ans Notification-Doc, nicht hier. Übergangslösung: Der BxA-Endpoint SubmitMovementSignal existiert aktuell nur auf der IAuthorityDocumentApi. Bis die Company-API ein eigenes Gegenstück bekommt, delegieren wir hier auf denselben Endpoint — parallel zu SubmitNotificationSignal(NotificationSignalDocumentType).