- Thema
- VB.NET
- SDK-Mitglieder
- ElectronicAddressSchemeFromString() ElectronicAddressSchemeToString() FillZUGFeRD_Structure() get_URIUniversalCommunication() remove_URIUniversalCommunication() set_URIUniversalCommunication()
- Business Terms
- BT-34 Elektronische Adresse des Verkäufers BT-49 Elektronische Adresse des Käufers BG-4 Verkäufer BG-7 Käufer BT-10 Referenz des Käufers BT-31 Umsatzsteuer-Identifikationsnummer des Verkäufers BT-48 Umsatzsteuer-Identifikationsnummer des Käufers
- Codebeispiele
- VB.NET
- Veröffentlicht
Jede Partei einer E-Rechnung kann eine elektronische Adresse haben, über die Geschäftsdokumente zugestellt werden: beim Verkäufer BT-34 (in BG-4), beim Käufer BT-49 (in BG-7). Zur Adresse gehört immer eine Schemakennung (BT-34-1 bzw. BT-49-1), die sagt, um welche Art Adresse es sich handelt – etwa EM für eine E-Mail-Adresse oder 0204 für eine Leitweg-ID. Die Aloaha ZUGFeRD SDK bietet dafür set_URIUniversalCommunication, get_URIUniversalCommunication und remove_URIUniversalCommunication sowie zwei Hilfsfunktionen für die Schemacodes.
Felder
| Feld | Bedeutung | Parameter |
|---|---|---|
| BT-34 | Elektronische Adresse des Verkäufers | URI mit UseSeller = True |
| BT-34-1 | Schema der Verkäuferadresse | schemeID |
| BT-49 | Elektronische Adresse des Käufers | URI mit UseSeller = False |
| BT-49-1 | Schema der Käuferadresse | schemeID |
Schreiben
set_URIUniversalCommunication(URI, schemeID, UseSeller) setzt Adresse und Schema. Der dritte Parameter ist optional; ohne Angabe gilt der Verkäufer. Den Schemacode übergeben Sie als Text. Für Codes aus der EAS-Liste wandelt ElectronicAddressSchemeToString einen Wert der Aufzählung ElectronicAddressSchemes in den vierstelligen Code um:
Dim alo As New Aloaha_ZUGFeRD.XML(Aloaha_ZUGFeRD.iXML.ZUGFeRDProfile.comfort, False, "IHR-LIZENZSCHLUESSEL")
' ... Rechnungskopf, Verkäufer und Käufer wie gewohnt setzen
' BT-34: Verkäufer per E-Mail erreichbar
alo.set_URIUniversalCommunication("rechnung@musterfirma.de", "EM", True)
' BT-49: Käufer (Behörde) über seine Leitweg-ID, Schema 0204
Dim schema As String = alo.ElectronicAddressSchemeToString(Aloaha_ZUGFeRD.iXML.ElectronicAddressSchemes.LeitwegID) ' "0204"
alo.set_URIUniversalCommunication("04011000-12345-67", schema, False)
VBA / VB6 (COM) – hier übergeben Sie den Schemacode direkt als Text:
alo.set_URIUniversalCommunication "rechnung@musterfirma.de", "EM", True
alo.set_URIUniversalCommunication "04011000-12345-67", "0204", False
Wichtig: Die SDK ändert nur dann etwas, wenn beide Werte – Adresse und Schema – nicht leer sind. Ein Aufruf mit leerer Adresse löscht also nichts, er bleibt einfach ohne Wirkung. Ein zweiter Aufruf für dieselbe Partei ersetzt den vorherigen Wert.
Häufige Schemacodes
| Code | Bedeutung | Wert in ElectronicAddressSchemes |
|---|---|---|
EM | E-Mail-Adresse | – (kein Enum-Wert, als Text übergeben) |
0204 | Leitweg-ID (XRechnung) | LeitwegID |
0088 | GLN (Global Location Number) | EanLocationCode |
9930 | deutsche Umsatzsteuer-ID | GermanyVatNumber |
9914 | österreichische Umsatzsteuer-ID | AustriaVatNumber |
9943 | maltesische Umsatzsteuer-ID | MaltaVatNumber |
Die Aufzählung enthält außerdem die Umsatzsteuer-ID-Schemata weiterer europäischer Länder (9910 bis 9957). Für einen Wert, der nicht in der Aufzählung definiert ist, liefert ElectronicAddressSchemeToString eine leere Zeichenkette.
Lesen
Nach dem Einlesen einer Rechnung mit FillZUGFeRD_Structure liefert get_URIUniversalCommunication die Adresse als Rückgabewert und das Schema über den zweiten Parameter (ByRef). Ist keine Adresse vorhanden, erhalten Sie leere Zeichenketten.
If alo.FillZUGFeRD_Structure("C:\Rechnungen\eingang.xml", "IHR-LIZENZSCHLUESSEL") Then
Dim vSchema As String = ""
Dim vAdresse As String = alo.get_URIUniversalCommunication(True, vSchema) ' BT-34 / BT-34-1
Dim kSchema As String = ""
Dim kAdresse As String = alo.get_URIUniversalCommunication(False, kSchema) ' BT-49 / BT-49-1
Dim eas As Aloaha_ZUGFeRD.iXML.ElectronicAddressSchemes = alo.ElectronicAddressSchemeFromString(kSchema)
If CInt(eas) = 0 Then
Console.WriteLine("Käufer: " & kAdresse & " (Schema " & kSchema & ")")
Else
Console.WriteLine("Käufer: " & kAdresse & " (" & eas.ToString() & ")") ' z. B. LeitwegID
End If
End If
ElectronicAddressSchemeFromString ignoriert führende und folgende Leerzeichen sowie Groß- und Kleinschreibung. Für die GLN und die Leitweg-ID akzeptiert sie auch die Form ohne führende Nullen ("88", "204"). Für unbekannte Codes – auch für EM – gibt sie den Wert 0 zurück, der in der Aufzählung keinem Schema entspricht. Prüfen Sie deshalb wie im Beispiel auf 0. In älteren Versionen der SDK musste der Code exakt vierstellig und ohne Leerzeichen übergeben werden; bereinigen Sie ihn dort vorher mit Trim.
Entfernen
alo.remove_URIUniversalCommunication() ' leert BT-34 und BT-34-1
remove_URIUniversalCommunication löscht nur die Adresse des Verkäufers. Die Käuferadresse (BT-49) bleibt unverändert; ein entsprechender Aufruf für den Käufer existiert nicht.
Hinweise
- Automatische Vorbelegung beim Speichern: Ist BT-34 bzw. BT-49 beim Aufruf von
SaveXMLleer, füllt die SDK das Feld selbst – mit der E-Mail-Adresse der Partei (z. B. ausWriteSellerContactPerson) und SchemaEModer, ohne E-Mail, mit einer deutschen bzw. maltesischen Umsatzsteuer-ID und Schema 9930 bzw. 9943. Das gilt auch nachremove_URIUniversalCommunication: Ist eine Verkäufer-E-Mail hinterlegt, steht sie anschließend wieder in BT-34. - Leitweg-ID: Wenn Sie die Eigenschaft
LeitwegIDsetzen, schreibt die SDK den Wert in BT-10 und – falls BT-49 noch leer ist – zusätzlich als Käuferadresse mit Schema0204. - Profile: BT-34 und BT-49 gibt es ab dem Profil BASIC WL, also auch in BASIC, EN 16931 (COMFORT) und EXTENDED, nicht aber in MINIMUM. In der XRechnung sind beide Adressen Pflicht.
- XML: Die Adresse steht als
ram:URIUniversalCommunication/ram:URIIDmit dem AttributschemeIDim Verkäufer- bzw. Käuferblock.
Ein vollständiges Beispiel mit Verkäufer, Käufer und elektronischen Adressen zeigt der Schnellstart für VB.NET. Die API-Referenz finden Sie unter set_URIUniversalCommunication und get_URIUniversalCommunication.
Häufige Fragen
Welches Schema nehme ich für eine E-Mail-Adresse?
Den Code EM. Er ist nicht Teil der Aufzählung ElectronicAddressSchemes; übergeben Sie ihn einfach als Text.
Wie lösche ich die elektronische Adresse des Käufers?
Dafür gibt es keine eigene Methode. remove_URIUniversalCommunication wirkt nur auf den Verkäufer, und set_URIUniversalCommunication mit leeren Werten ändert nichts.
Ist die elektronische Adresse in der XRechnung Pflicht?
Ja, die XRechnung verlangt sowohl BT-34 als auch BT-49, jeweils mit Schemakennung.
Business Terms in diesem Artikel: BT-34 BT-49 BG-4 BG-7 BT-10 BT-31 BT-48