Objektkennung und Buchungsreferenz je Position (BT-128, BT-133)

BT-128 BT-133 BG-25 BT-18 BT-19
Thema
VB.NET
SDK-Mitglieder
Add_SpecifiedLineTradeSettlement_AdditionalReferencedDocument() Add_SpecifiedLineTradeSettlement_ReceivableSpecifiedTradeAccountingAccount() FillZUGFeRD_Structure() get_SpecifiedLineTradeSettlement_AdditionalReferencedDocument() Get_SpecifiedLineTradeSettlement_ReceivableSpecifiedTradeAccountingAccount() TradeItemsCount
Business Terms
BT-128 Objektkennung auf Ebene der Rechnungsposition BT-133 Buchungsreferenz des Käufers für die Rechnungsposition BG-25 Rechnungsposition BT-18 Objektkennung BT-19 Buchungsreferenz des Käufers
Codebeispiele
VB.NET
Veröffentlicht

Zwei Angaben einer Rechnungsposition helfen dem Käufer bei der Zuordnung und Verbuchung:

  • Die Objektkennung auf Positionsebene (BT-128) nennt den Gegenstand, auf dem die Position beruht – etwa eine Abonnementnummer, eine Telefonnummer oder eine Zählernummer.
  • Die Buchungsreferenz des Käufers (BT-133) sagt, wo der Käufer die Position verbucht, zum Beispiel ein Sachkonto oder eine Kostenstelle. Der Käufer muss sie dem Verkäufer vorher mitteilen.

Beide stehen in der XML unter SpecifiedLineTradeSettlement der Position. Für die Gegenstücke auf Rechnungsebene siehe Vergabenummer und Objektkennung (BT-17, BT-18) und Kostenstelle / Buchungsreferenz (BT-19).

Felder und Methoden

FeldParameterSchreiben / Lesen
BT-128 ObjektkennungIssuerAssignedIDAdd_SpecifiedLineTradeSettlement_AdditionalReferencedDocument / get_SpecifiedLineTradeSettlement_AdditionalReferencedDocument
Dokumentart, immer 130TypeCode
BT-128-1 Schema der Kennung (UNTDID 1153)ReferenceTypeCode
BT-133 BuchungsreferenzIDAdd_SpecifiedLineTradeSettlement_ReceivableSpecifiedTradeAccountingAccount / Get_SpecifiedLineTradeSettlement_ReceivableSpecifiedTradeAccountingAccount
Art des Kontos (nur EXTENDED)TypeCode

Alle Methoden erwarten den Index der Position, beginnend bei 0. Die Lesemethoden haben einen zweiten Index für den Eintrag innerhalb der Position, ebenfalls ab 0.

Schreiben

VB.NET – Position 0 wurde zuvor mit AddProduct_Comfort angelegt:

Dim alo As New Aloaha_ZUGFeRD.XML(Aloaha_ZUGFeRD.iXML.ZUGFeRDProfile.comfort, False, "IHR-LIZENZSCHLUESSEL")
' ... Rechnungskopf und Positionen anlegen

' BT-128: Zählernummer, auf die sich Position 0 bezieht
alo.Add_SpecifiedLineTradeSettlement_AdditionalReferencedDocument(0, "130", "ZAEHLER-0815")
' BT-133: Kostenstelle des Käufers für Position 0
alo.Add_SpecifiedLineTradeSettlement_ReceivableSpecifiedTradeAccountingAccount(0, "KST-4711")

VBA / VB6 (COM)

alo.Add_SpecifiedLineTradeSettlement_AdditionalReferencedDocument 0, "130", "ZAEHLER-0815"
alo.Add_SpecifiedLineTradeSettlement_ReceivableSpecifiedTradeAccountingAccount 0, "KST-4711"

Ein Schema für die Objektkennung übergeben Sie bei Bedarf als vierten Parameter ReferenceTypeCode.

Lesen

VB.NET

Dim alo As New Aloaha_ZUGFeRD.XML("IHR-LIZENZSCHLUESSEL")
If alo.FillZUGFeRD_Structure("C:\Rechnungen\eingang.xml", "IHR-LIZENZSCHLUESSEL") Then
    For i As Integer = 0 To alo.TradeItemsCount - 1
        Dim DokArt As String = "", Objekt As String = "", Schema As String = ""
        alo.get_SpecifiedLineTradeSettlement_AdditionalReferencedDocument(i, 0, DokArt, Objekt, Schema)

        Dim Konto As String = "", KontoArt As String = ""
        alo.Get_SpecifiedLineTradeSettlement_ReceivableSpecifiedTradeAccountingAccount(i, 0, Konto, KontoArt)

        Console.WriteLine($"Position {i + 1}: Objekt {Objekt}, Buchungsreferenz {Konto}")
    Next
End If

VBA / VB6 (COM)

Dim i As Long
Dim DokArt As String, Objekt As String, Schema As String, Konto As String
For i = 0 To alo.TradeItemsCount - 1
    DokArt = "": Objekt = "": Schema = "": Konto = ""
    alo.get_SpecifiedLineTradeSettlement_AdditionalReferencedDocument i, 0, DokArt, Objekt, Schema
    alo.Get_SpecifiedLineTradeSettlement_ReceivableSpecifiedTradeAccountingAccount i, 0, Konto
    Debug.Print i + 1, Objekt, Konto
Next i

Gibt es den Eintrag nicht, lassen beide Lesemethoden die übergebenen Variablen unverändert. Setzen Sie sie deshalb vor jedem Aufruf auf "", sonst sehen Sie den Wert der vorigen Position. Eine eigene Zählfunktion gibt es nicht; weitere Einträge einer Position lesen Sie mit Index 1, 2 und so fort, bis der Wert leer bleibt.

Hinweise

  • Profil: BT-128 und BT-133 gibt es ab EN 16931 (COMFORT), also auch in EXTENDED und XRechnung.
  • Nur ein Eintrag je Position: Die EN 16931 erlaubt je Position höchstens eine Objektkennung und eine Buchungsreferenz. Jeder Aufruf der Add-Methoden hängt einen weiteren Eintrag an; außerhalb von EXTENDED schreibt die SDK aber nur den ersten (gültigen) Eintrag je Position in die XML, weitere bleiben gespeichert und lesbar. Nur im Profil EXTENDED werden alle Einträge geschrieben. In älteren Versionen der SDK wurden in jedem Profil alle Einträge geschrieben – rufen Sie die Methoden dort je Position nur einmal auf.
  • Leere Werte: Ein Eintrag ohne IssuerAssignedID bzw. ohne ID wird nicht in die XML geschrieben.
  • Rückgabewert: Add_..._AdditionalReferencedDocument gibt True zurück, wenn TypeCode gefüllt ist; Add_..._ReceivableSpecifiedTradeAccountingAccount, wenn ID gefüllt ist. Bei ungültigem Positionsindex (negativ, zu groß oder noch keine Positionen) geben beide False zurück und speichern nichts. In älteren Versionen der SDK konnte auch dann True zurückkommen.
  • Art des Kontos: Den TypeCode der Buchungsreferenz schreibt die SDK nur im Profil EXTENDED, weil die anderen Profile das Element nicht kennen.

Häufige Fragen

Wo gebe ich die Zählernummer einer Strom- oder Wasserrechnung an?

Je Position in der Objektkennung BT-128, mit Dokumentart 130. Gilt die Kennung für die ganze Rechnung, gehört sie in BT-18 auf Rechnungsebene.

Was ist der Unterschied zwischen BT-19 und BT-133?

Beide sind Buchungsreferenzen des Käufers. BT-19 gilt für die ganze Rechnung, BT-133 nur für eine einzelne Position.

Welcher Index gilt beim Auslesen?

Der erste Parameter ist der Positionsindex ab 0, der zweite der Eintrag innerhalb der Position, ebenfalls ab 0.

Business Terms in diesem Artikel: BT-128 BT-133 BG-25 BT-18 BT-19