eANV: Begleitschein und Übernahmeschein¶
Begleitschein (BGS) und Übernahmeschein (UNS) sind Belege des elektronischen Abfallnachweisverfahrens (eANV) nach der Nachweisverordnung (NachwV). Ihr Format gibt ein XML-Schema des BMU vor. ZEDAL kapselt dieses Format: Du setzt typisierte Felder über die BmuDocumentApi (per .NET SDK, gRPC oder REST) und schreibst das XML nicht selbst. ZEDAL stellt die Belege den übrigen Beteiligten zu und meldet abgeschlossene Begleitscheine über die ZKS-Abfall an die Behörden.
Verfügbarkeit¶
| Baustein | Stand |
|---|---|
BmuDocumentApi über gRPC und das .NET SDK |
Testumgebung |
BmuDocumentApi über REST |
folgt |
Speichern, Vermitteln, Melden, Abholen (DocumentApi) |
Produktion |
| Qualifizierte Signatur je Layer über den WebSigner | folgt |
.NET SDK mit XmlOptions am BmuDocumentHandler |
ab Zedal.Sdk 1.3.0 |
Wann die Bausteine für deine Umgebung bereitstehen, erfährst du beim ZEDAL-Support (erp-tools@zedal.de).
Leseweg¶
| Seite | Inhalt |
|---|---|
| Verfahren und Rollen | wer beteiligt ist, wie Layer aufeinander folgen, Fristen, Sammelentsorgung, Korrektur und Storno |
| Begleitschein je Rolle (.NET SDK) | durchgehendes C#-Beispiel für Erzeuger, Beförderer, Zwischenlager, Entsorger und Einsammler |
| Begleitschein und Übernahmeschein | die Schritte im Detail, mit den Aufrufen über REST |
| Signieren mit dem WebSigner | der Signaturvorgang aus Sicht deiner Anwendung |
| Feldregeln → BMU | Nummernformate, Mengen und Einheiten, Feldlängen |
| Fehlercodes → BMU | welche Fehler der Dienst meldet und woran du sie unterscheidest |
Arbeitsmodell¶
Die BmuDocumentApi ist zustandslos. Das XML hältst du:
- Jeder Aufruf schickt das aktuelle XML mit (
doc_xml, in JSON base64-kodiert). - Jede Antwort liefert die typisierte Sicht (
document) und, wenn sich das Dokument geändert hat, das neue XML. Mit diesem XML arbeitest du weiter. - Aufbewahren musst du das XML; ohne es lässt sich das Dokument weder lesen noch ändern.
Im SDK übernimmt das der BmuDocumentHandler. Er hält DocXml und Document, schickt das XML bei jedem Aufruf mit und aktualisiert danach beide Properties. Die Methoden zum Anlegen und Ändern geben nichts zurück, das Ergebnis liest du an den Properties ab.
In deinen ZEDAL-Bestand kommt ein Dokument erst mit dem Versand an ZEDAL.
Rollen und Layer¶
Die Beteiligten stehen in eigenen Feldern des Dokuments:
| Beteiligter | BGSDokument (Begleitschein) |
UNSDokument (Übernahmeschein) |
|---|---|---|
| Erzeuger | erzeuger |
erzeuger |
| Beförderer | befoerderer1, befoerderer2, befoerderer3 |
befoerderer |
| Entsorger | entsorger |
entsorger |
| Zwischenlager | zwischenlager |
– |
Ein Begleitschein besteht aus Layern. Geschrieben und signiert wird im aktuellen Layer (nach AddLayer im neuen). Den Typ eines Layers gibt LayerType an:
LayerType |
Layer |
|---|---|
VORLAGE |
Vorlage |
ERZEUGER |
Erzeuger |
BEFOERDERER |
Beförderer |
ENTSORGER |
Entsorger |
BEHOERDE |
Behörde |
ERGAENZUNG |
Ergänzung |
ZWISCHENLAGER |
Zwischenlager |
LAYERTYPE_UNSPECIFIED behandelt der Dienst wie VORLAGE, gib den Typ also immer an. Vorlage- und Ergänzungslage brauchen eine ATB-Rolle (XmlOptions.atb_rolle, Werte aus Rolle, etwa ERZ, BEF, ENT), ebenso CreateDocument für einen Übernahmeschein (ERZ, BEF oder ENT).
Layer anhängen geht nur beim Begleitschein
AddLayer funktioniert für Begleitscheine. Auf einem Übernahmeschein scheitert der Aufruf für jeden Layertyp mit CANCELLED.
Lebenszyklus¶
- Anlegen: aus einem ZEDAL-Muster (
CreateDocumentFromTemplate) oder aus Daten (CreateDocument, wahlweise mit Vorlagelayer). - Füllen:
UpdateDocumentschreibt in den aktuellen Layer. - Signieren:
GetValidSignaturePositionszeigt die offenen Signaturstellen des aktuellen Layers. Layer-genaue Signatur: folgt. Die SignerApi signiert BMU-Dokumente derzeit als Ganzes,BmuSigningOptionswird nicht ausgewertet (Signieren). - Nächster Layer:
AddLayerhängt den Layer des nächsten Beteiligten an, weiter mit Schritt 2. - An ZEDAL senden: Das XML mit allen Layern geht als Transportdokument an ZEDAL (SDK und gRPC).
Felder schreiben¶
UpdateDocument übernimmt nur Felder mit meta.in_layer = true. Ein Feld ohne diese Markierung ignoriert der Dienst, und der Aufruf meldet trotzdem Erfolg. Nicht mitgeschickte Felder bleiben unverändert, du schickst also nur, was sich ändert. Bei Listen bestimmt eine mitgeschickte, nicht leere Liste die Länge der Liste im Dokument.
Prüfung und Entwurf¶
XmlOptions steuert die Prüfung, und zwar pro Aufruf:
| Feld | Werte |
|---|---|
validation |
VALIDATION_FULL (Standard bei CreateDocument und UpdateDocument): Schema und weitere Prüfungen · VALIDATION_MANDATORY: nur Pflichtfelder · VALIDATION_TYPES: nur Datentypen · VALIDATION_NONE (Standard bei AddLayer): keine Prüfung, etwa für Entwürfe und Muster |
pruefziffer |
PRUEFZIFFER_VALIDATE (Standard) prüft Prüfziffern, PRUEFZIFFER_CALCULATE berechnet sie |
atb_rolle |
Rolle, für die der Layer angelegt wird; Pflicht für Vorlage- und Ergänzungslayer und beim Anlegen eines Übernahmescheins |
Ohne XmlOptions prüfen CreateDocument und UpdateDocument vollständig, auch wenn du das Dokument als Entwurf angelegt hast. AddLayer prüft den neuen Layer ohne Optionen nicht. Willst du bei einem Aufruf eine andere Prüfung, gib die Optionen bei genau diesem Aufruf mit.
Storno¶
Einen Storno markierst du beim Versand an ZEDAL mit dem Flag cancel: Es kennzeichnet die übergebene Version als Stornierung (An ZEDAL senden).