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
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
SequenceNumberfür eine Notifizierung, indem der Transportpapier-Index (ListTransportDocuments, Filterdoc.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 dernotification_id-Filter) und beginnt für jede neue Notifizierung wieder bei1.Ü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. einDiwassWasteMovement-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, ohneMOV); ein etwaigesMOV-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 untersequence_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-EndpointSubmitMovementSignalexistiert aktuell nur auf der IAuthorityDocumentApi. Bis die Company-API ein eigenes Gegenstück bekommt, delegieren wir hier auf denselben Endpoint — parallel zu SubmitNotificationSignal(NotificationSignalDocumentType).