- 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
| Feld | Parameter | Schreiben / Lesen |
|---|---|---|
| BT-128 Objektkennung | IssuerAssignedID | Add_SpecifiedLineTradeSettlement_AdditionalReferencedDocument / get_SpecifiedLineTradeSettlement_AdditionalReferencedDocument |
Dokumentart, immer 130 | TypeCode | |
| BT-128-1 Schema der Kennung (UNTDID 1153) | ReferenceTypeCode | |
| BT-133 Buchungsreferenz | ID | Add_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
IssuerAssignedIDbzw. ohneIDwird nicht in die XML geschrieben. - Rückgabewert:
Add_..._AdditionalReferencedDocumentgibtTruezurück, wennTypeCodegefüllt ist;Add_..._ReceivableSpecifiedTradeAccountingAccount, wennIDgefüllt ist. Bei ungültigem Positionsindex (negativ, zu groß oder noch keine Positionen) geben beideFalsezurück und speichern nichts. In älteren Versionen der SDK konnte auch dannTruezurückkommen. - Art des Kontos: Den
TypeCodeder 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