- Thema
- VB.NET
- SDK-Mitglieder
- AddShipToTradePartyGlobalID() FillZUGFeRD_Structure() GetShipToTradeParty() GlobalID2String() GlobalIDFromString() ReadBuyerLegalID() ReadSellerLegalID() WriteShipToTradeParty()
- Business Terms
- BT-30 Kennung der rechtlichen Registrierung des Verkäufers BT-47 Kennung der rechtlichen Registrierung des Käufers BT-71 Kennung des Lieferorts BT-29 Kennung des Verkäufers BG-4 Verkäufer BG-7 Käufer BG-13 Lieferinformationen BT-46 Kennung des Käufers
- Codebeispiele
- VB.NET, XML
- Veröffentlicht
E-Rechnungen identifizieren Unternehmen und Orte auf mehreren Wegen: über die Registernummer (Handelsregister o. Ä.) von Verkäufer (BT-30) und Käufer (BT-47) und über globale Kennungen wie GLN oder DUNS, etwa beim Verkäufer (BT-29) oder beim Lieferort (BT-71). Zu jeder Kennung kann ein Schema nach ISO/IEC 6523 gehören, z. B. 0088 für die GLN. Dieser Artikel zeigt, wie Sie Registernummern samt Schema auslesen, Schemacodes umwandeln und dem Lieferort eine globale Kennung geben.
Übersicht
| Feld | Bedeutung | SDK |
|---|---|---|
| BT-30, BT-30-1 | Kennung der rechtlichen Registrierung des Verkäufers und ihr Schema | ReadSellerLegalID(LegalID, Schema) |
| BT-47, BT-47-1 | Kennung der rechtlichen Registrierung des Käufers und ihr Schema | ReadBuyerLegalID(LegalID, Schema) |
| BT-71, BT-71-1 | Kennung des Lieferorts als globale Kennung mit Schema | AddShipToTradePartyGlobalID(IDVal, IDType) |
| BT-29-1, BT-46-1, BT-71-1, BT-157-1 | Schema einer globalen Kennung (ISO 6523) | GlobalIDFromString(s) |
Registernummer mit Schema lesen
Geschrieben werden die Registernummern über die Eigenschaften SellerLegalID und BuyerLegalID; das zeigt der Artikel Handelsname und Registernummer in der E-Rechnung. Beim Lesen geben diese Eigenschaften nur die Nummer zurück, nicht das Schema. ReadSellerLegalID und ReadBuyerLegalID liefern beides über Referenzparameter:
Dim alo As New Aloaha_ZUGFeRD.XML(Aloaha_ZUGFeRD.iXML.ZUGFeRDProfile.comfort, False, "IHR-LIZENZSCHLUESSEL")
If alo.FillZUGFeRD_Structure("C:\Rechnungen\eingang.xml", "IHR-LIZENZSCHLUESSEL") Then
Dim vNummer As String = "", vSchema As String = ""
alo.ReadSellerLegalID(vNummer, vSchema) ' BT-30 / BT-30-1
Dim kNummer As String = "", kSchema As String = ""
alo.ReadBuyerLegalID(kNummer, kSchema) ' BT-47 / BT-47-1
Console.WriteLine("Verkäufer: " & vNummer & If(vSchema <> "", " (Schema " & vSchema & ")", ""))
Console.WriteLine("Käufer: " & kNummer & If(kSchema <> "", " (Schema " & kSchema & ")", ""))
End If
VBA / VB6 (COM) – deklarieren Sie die Variablen als String, sonst kann VBA sie nicht als Referenz übergeben:
Dim Nummer As String, Schema As String
alo.ReadSellerLegalID Nummer, Schema
Ist keine Registernummer vorhanden, erhalten Sie leere Zeichenketten. Für eine deutsche Handelsregisternummer wie „HRB 12345“ ist das Schema meist leer; ein Schema steht z. B. bei französischen SIREN-Nummern (0002). Das gilt für CII- und UBL-Rechnungen gleichermaßen: Bei UBL übernimmt das SDK das Schema aus dem Attribut schemeID von cac:PartyLegalEntity/cbc:CompanyID. In älteren Versionen des SDK blieb das Schema beim Einlesen einer UBL-Rechnung leer.
Schemacodes umwandeln
GlobalIDFromString wandelt einen vierstelligen ISO-6523-Code in einen Wert der Aufzählung GlobalIDSchemas um. Das ist praktisch, wenn Sie Kennungen in Ihrer Software nach Typ verarbeiten wollen:
Dim art As Aloaha_ZUGFeRD.iXML.GlobalIDSchemas = alo.GlobalIDFromString("0088")
If art = Aloaha_ZUGFeRD.iXML.GlobalIDSchemas.GLN Then
Console.WriteLine("Kennung ist eine GLN")
End If
' Gegenrichtung: Aufzählung -> Code
Dim code As String = alo.GlobalID2String(Aloaha_ZUGFeRD.iXML.GlobalIDSchemas.DUNS) ' "0060"
| Code | GlobalIDSchemas | Bedeutung |
|---|---|---|
0002 | Sirene | SIRENE (Frankreich) |
0009 | SiretCode | SIRET (Frankreich) |
0021 | Swift | SWIFT |
0060 | DUNS | D-U-N-S-Nummer |
0088 | GLN | Global Location Number (GS1) |
0160 | EAN | GTIN/EAN (GS1) |
0177 | ODETTE | ODETTE |
0208 | CompanyNumber | Unternehmensnummer (Belgien) |
Jeder andere Text – auch ein Code ohne führende Nullen wie "88" – ergibt GlobalIDSchemas.Unknown. GlobalID2String liefert für Unknown den Text "0000".
Globale Kennung des Lieferorts (BT-71)
Hat der Lieferort eine GLN, setzen Sie sie mit AddShipToTradePartyGlobalID. Ist der zweite Parameter leer, verwendet das SDK das Schema 0088 (GLN). Ein erneuter Aufruf ersetzt den vorherigen Wert; ist die Kennung leer, passiert nichts.
alo.WriteShipToTradeParty("Musterfirma GmbH – Lager Süd", "80331", "München", "Lagerstraße 7", "", "DE")
alo.AddShipToTradePartyGlobalID("4000001123452", "0088") ' BT-71 / BT-71-1
Ergebnis in der XML:
<ram:ShipToTradeParty>
<ram:GlobalID schemeID="0088">4000001123452</ram:GlobalID>
<ram:Name>Musterfirma GmbH – Lager Süd</ram:Name>
...
</ram:ShipToTradeParty>
Dieselbe Kennung können Sie auch über die letzten beiden Parameter von WriteShipToTradeParty (GlobalID, GlobalIDSchemeID) übergeben. Gelesen wird sie mit GetShipToTradeParty:
Dim name As String = "", plz As String = "", ort As String = "", zeile1 As String = "", zeile2 As String = ""
Dim land As String = "", ortID As String = "", ustid As String = "", leitweg As String = "", zeile3 As String = ""
Dim gid As String = "", gidSchema As String = ""
alo.GetShipToTradeParty(name, plz, ort, zeile1, zeile2, land, ortID, ustid, leitweg, zeile3, gid, gidSchema)
If alo.GlobalIDFromString(gidSchema) = Aloaha_ZUGFeRD.iXML.GlobalIDSchemas.GLN Then Console.WriteLine("GLN Lieferort: " & gid)
Die vollständige Lieferanschrift beschreibt der Artikel Lieferanschrift in der E-Rechnung.
Hinweise zu Profilen
- BT-30 und BT-47 sind schon im Profil MINIMUM erlaubt.
- BT-71 gibt es ab BASIC WL. Eine Lieferanschrift, die nur aus der globalen Kennung besteht, schreibt das SDK nur, wenn Kennung und Schema vorhanden sind.
- Die globale Kennung des Verkäufers (BT-29) setzen Sie mit
AddSellerGlobalID, die des Käufers (BT-46) mitAddBuyerGlobalID– siehe Kreditorennummer (BT-29).
Business Terms in diesem Artikel: BT-30 BT-47 BT-71 BT-29 BG-4 BG-7 BG-13 BT-46 BT-157 BT-70