Annex VII mit dem SDK¶
Setup und je Stage der Aufruf über den Annex7DocumentHandler.
Die fachlichen Hintergründe stehen in der Anleitung Annex VII (Company-Rolle).
Setup¶
// Authenticated client with an active session — see Getting started
var client = ZedalClientFactory.Default.CreateClient(
TargetSystem.Test, "MyIntegrationApp", "1.0.0");
await client.CreateSession(
userId: "mysubscriber-myaccount@1:mypassword",
appToken: new AppToken("<APP_TOKEN_JWT>"));
Pro Annex VII ein Handler. Jede Folge-Stage lädt den aktuellen Stand mit LoadFromZedalByAnnex7DocumentNo(annex7DocumentNo) neu.
Stage 1 — CreateAnnex7¶
Annex7DocumentHandler handler = client.DocumentHandler.CreateAnnex7Handler();
await handler.CreateAnnex7(new WasteAnnex7DocumentType
{
// arranger, waste producer (or ArrangerIsProducer = true without a WasteProducer),
// carriers, consignee, recovery facility or laboratory,
// waste, quantity, planned start of the shipment, recovery operation …
// CurrentUserPartyUuid: the PartyUuid of the arranger
// TransportAnnouncement.ShipmentOriginLocation.PartyUuid: a party in the document
});
await handler.SendToDiwass(ZedalCallContext.Default.WithTimeout(180));
await handler.WaitForDiwassTransfer(
timeout: TimeSpan.FromMinutes(6),
pollInterval: TimeSpan.FromSeconds(5));
await handler.ReloadFromZedal();
// The Annex VII number is assigned by DiWaSS and arrives with its response.
string annex7DocumentNo = handler.DiwassNotificationId;
DiwassNotificationId trägt beim Annex VII die Annex-VII-Nummer. Sie steht erst nach dem Nachladen fest; vorher ist sie leer. Welche Felder DiWaSS über das Schema hinaus verlangt, steht unter Feldregeln → Annex VII, alle Felder unter DiWaSS-Felder.
Status und nächste Schritte¶
var handler = client.DocumentHandler.CreateAnnex7Handler();
await handler.LoadFromZedalByAnnex7DocumentNo(annex7DocumentNo);
// status as last reported by DiWaSS, e.g. "MOVING"
string status = handler.Annex7.GetInformation()?.Announcement?.DocumentStatus?.Value;
// steps the document allows next, narrowed down to your roles in it
IReadOnlyList<long> mine = await client.MyAccount.GetOwnDiwassOperatorIds();
var mySteps = PermissionMatrixInference.Filter(mine, handler.FollowupIntents, handler.Annex7);
Die Statuswerte sind dieselben wie beim Movement. Die Zustände und welcher Aufruf in welchen Status führt, zeigt der Lebenszyklus.
Stage 2 — SetAnnex7¶
Ändert die Ankündigung. Die Annex-VII-Nummer muss im Dokument stehen, sonst findet DiWaSS die Ankündigung nicht.
var handler = client.DocumentHandler.CreateAnnex7Handler();
await handler.LoadFromZedalByAnnex7DocumentNo(annex7DocumentNo);
await handler.SetAnnex7(new WasteAnnex7DocumentType
{
// the complete announcement with the Annex VII number,
// e.g. now with the actual quantity and the carrier …
});
await handler.SendToDiwass();
Stage 3 — SetAnnex7CarrierTransfer¶
var handler = client.DocumentHandler.CreateAnnex7Handler();
await handler.LoadFromZedalByAnnex7DocumentNo(annex7DocumentNo);
await handler.SetAnnex7CarrierTransfer(new WasteAnnex7TransportType
{
// Annex VII number, your carrier party with a contact of name, phone number and email,
// date of takeover, means of transport …
});
await handler.SendToDiwass();
Stage 4 — SetAnnex7ConsigneeCertificate¶
var handler = client.DocumentHandler.CreateAnnex7Handler();
await handler.LoadFromZedalByAnnex7DocumentNo(annex7DocumentNo);
await handler.SetAnnex7ConsigneeCertificate(new WasteAnnex7ConsigneeCertificateOfWasteReceiptType
{
// Annex VII number, date of receipt, quantity received,
// your declaration and signature as consignee …
});
await handler.SendToDiwass();
Stage 5 — SetAnnex7FacilityCertificate¶
var handler = client.DocumentHandler.CreateAnnex7Handler();
await handler.LoadFromZedalByAnnex7DocumentNo(annex7DocumentNo);
await handler.SetAnnex7FacilityCertificate(new WasteAnnex7CertificateOfWasteReceiptType
{
// Annex VII number, date of receipt, quantity accepted,
// your declaration and signature as facility or laboratory …
});
await handler.SendToDiwass();
Stage 6 — SetAnnex7CertificateOfCompletion¶
var handler = client.DocumentHandler.CreateAnnex7Handler();
await handler.LoadFromZedalByAnnex7DocumentNo(annex7DocumentNo);
await handler.SetAnnex7CertificateOfCompletion(new WasteAnnex7CertificateOfWasteCompletionType
{
// Annex VII number, completion date, recovery operation applied,
// quantity recovered, your declaration and signature …
});
await handler.SendToDiwass();
Stornierung und Rücknahme¶
- Stornierung: Der Veranlasser storniert mit dem Signal
Annex7Cancelled. DerAnnex7DocumentHandlerhat dafür in SDK 1.4.0 keine eigene Methode. - Rücknahme:
SetAnnex7TakeBack(WasteAnnex7TakeBackType)ist der Schritt der zuständigen Behörde.UserCompetentAuthorityDomainIdundCompetentAuthoritySignaturesind Pflichtfelder.
Validierung und Fehlerbehandlung¶
Wie beim Movement: Validierungsfehler stehen nach dem Stage-Aufruf in handler.ValidationErrors, WaitForDiwassTransfer wirft DiwassTransferFailedException, wenn DiWaSS ablehnt, und TimeoutException, wenn keine Quittung kommt. Die Zeitbudgets stehen unter Lebenszyklus → Versandverfahren, die Codes unter Fehlercodes.