Elektronische Adresse von Verkäufer und Käufer (BT-34, BT-49)

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

FeldBedeutungParameter
BT-34Elektronische Adresse des VerkäufersURI mit UseSeller = True
BT-34-1Schema der VerkäuferadresseschemeID
BT-49Elektronische Adresse des KäufersURI mit UseSeller = False
BT-49-1Schema der KäuferadresseschemeID

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

CodeBedeutungWert in ElectronicAddressSchemes
EME-Mail-Adresse– (kein Enum-Wert, als Text übergeben)
0204Leitweg-ID (XRechnung)LeitwegID
0088GLN (Global Location Number)EanLocationCode
9930deutsche Umsatzsteuer-IDGermanyVatNumber
9914österreichische Umsatzsteuer-IDAustriaVatNumber
9943maltesische Umsatzsteuer-IDMaltaVatNumber

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 SaveXML leer, füllt die SDK das Feld selbst – mit der E-Mail-Adresse der Partei (z. B. aus WriteSellerContactPerson) und Schema EM oder, ohne E-Mail, mit einer deutschen bzw. maltesischen Umsatzsteuer-ID und Schema 9930 bzw. 9943. Das gilt auch nach remove_URIUniversalCommunication: Ist eine Verkäufer-E-Mail hinterlegt, steht sie anschließend wieder in BT-34.
  • Leitweg-ID: Wenn Sie die Eigenschaft LeitwegID setzen, schreibt die SDK den Wert in BT-10 und – falls BT-49 noch leer ist – zusätzlich als Käuferadresse mit Schema 0204.
  • 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:URIID mit dem Attribut schemeID im 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