- Thema
- VB.NET
- SDK-Mitglieder
- AddInvoiceReferencedDocument() FillZUGFeRD_Structure() GetInvoiceReferencedDocument() InvoiceReferencedDocuments()
- Business Terms
- BG-3 Referenz auf die vorausgegangene Rechnung BT-25 Referenz auf die vorausgegangene Rechnung BT-26 Rechnungsdatum der vorausgegangenen Rechnung BT-3 Code für den Rechnungstyp
- Codebeispiele
- VB.NET
- Veröffentlicht
Korrigiert eine Rechnung eine frühere, ist sie eine Gutschrift zu einer Rechnung oder fasst eine Schlussrechnung mehrere Abschlagsrechnungen zusammen, verweist sie in der Gruppe Referenz auf die vorausgegangene Rechnung (BG-3) auf diese Belege. Jeder Verweis besteht aus der Nummer der vorausgegangenen Rechnung (BT-25) und optional ihrem Rechnungsdatum (BT-26). Sie steht im Kopf der Rechnung unter ram:ApplicableHeaderTradeSettlement/ram:InvoiceReferencedDocument. In ZUGFeRD 2.5.2 / Factur-X 1.09.2 darf sie mehrfach vorkommen, in XRechnung 3.0 nur einmal (siehe Hinweise).
Felder
| Feld | Bedeutung | Schreiben | Lesen |
|---|---|---|---|
| BT-25 | Nummer der vorausgegangenen Rechnung | IssuerAssignedID | InvoiceReferencedDocument |
| BT-26 | Rechnungsdatum der vorausgegangenen Rechnung | IssueDateTime | InvoiceReferencedDocumentDate |
| – | Datumsformat, in der Regel 102 (JJJJMMTT) | Document_DateFormat | InvoiceReferencedDocumentDateFormat |
Ob die neue Rechnung eine Korrektur oder Gutschrift ist, steht nicht in BG-3, sondern im Rechnungstyp BT-3 (z. B. 384 für eine korrigierte Rechnung, 381 für eine Gutschrift).
Schreiben
AddInvoiceReferencedDocument hängt bei jedem Aufruf einen weiteren Verweis an. Der zweite Parameter ReferenceTypeCode muss immer übergeben werden, ist aber normalerweise ein Leerstring (siehe Hinweise).
VB.NET
Dim alo As New Aloaha_ZUGFeRD.XML(Aloaha_ZUGFeRD.iXML.ZUGFeRDProfile.comfort, False, "IHR-LIZENZSCHLUESSEL")
' ... Rechnungskopf (z. B. Typ 384 = korrigierte Rechnung), Parteien, Positionen ...
' korrigierte Rechnung RE-2026-0815 vom 15.09.2026
alo.AddInvoiceReferencedDocument("RE-2026-0815", "", "20260915", "102")
' Schlussrechnung: Verweis auf die Abschlagsrechnung
alo.AddInvoiceReferencedDocument("AR-2026-0102", "", "20260610")
' nur ZUGFeRD 2.3 / Factur-X: weiterer Verweis (bei XRechnung schreibt die SDK nur den ersten)
alo.AddInvoiceReferencedDocument("AR-2026-0101", "", "20260310")
VBA / VB6 (COM)
alo.AddInvoiceReferencedDocument "RE-2026-0815", "", "20260915", "102"
- Ist die Rechnungsnummer leer, legt die SDK keinen Verweis an.
- Das Datumsformat ist mit
102vorbelegt. Lassen Sie das Datum weg, schreibt die SDK nur die Nummer. - Laut EN 16931 soll das Datum (BT-26) angegeben werden, wenn die Rechnungsnummer allein nicht eindeutig ist.
Lesen
InvoiceReferencedDocuments liefert die Anzahl der Verweise, GetInvoiceReferencedDocument füllt Nummer, Datum, Datumsformat und Typcode eines Verweises per Referenz. Der Index beginnt bei 0.
VB.NET
Dim alo As New Aloaha_ZUGFeRD.XML
If alo.FillZUGFeRD_Structure("C:\Rechnungen\gutschrift.xml", "IHR-LIZENZSCHLUESSEL") Then
For i As Integer = 0 To alo.InvoiceReferencedDocuments() - 1
Dim Nummer As String = "", Datum As String = "", DatumFormat As String = "", Typ As String = ""
alo.GetInvoiceReferencedDocument(i, Nummer, Datum, DatumFormat, Typ)
Console.WriteLine("Bezug auf Rechnung " & Nummer & " vom " & Datum)
Next
End If
VBA / VB6 (COM)
Dim i As Long
Dim Nummer As String, Datum As String
For i = 0 To alo.InvoiceReferencedDocuments - 1
Nummer = "": Datum = ""
alo.GetInvoiceReferencedDocument i, Nummer, Datum
Debug.Print "Vorausgegangene Rechnung: "; Nummer; " vom "; Datum
Next i
Beim Einlesen übernimmt die SDK alle Verweise – aus CII (ZUGFeRD, Factur-X, XRechnung) ebenso wie aus UBL-Rechnungen und -Gutschriften (cac:BillingReference).
Bei einem Index außerhalb des gültigen Bereichs lässt GetInvoiceReferencedDocument die übergebenen Variablen unverändert; setzen Sie sie deshalb vor jedem Aufruf zurück.
Hinweise
- Anzahl der Verweise: ZUGFeRD 2.5.2 / Factur-X 1.09.2 erlauben mehrere Verweise in allen Profilen. XRechnung 3.0 (geprüft gegen das CII-Schema D16B) erlaubt im Rechnungskopf nur einen Verweis. Ab Version 11.0.0.1 schreibt die SDK bei XRechnung deshalb nur den ersten Verweis; ältere Versionen schrieben alle, was beim KoSIT-Validator zu einem Schemafehler führte. Die gespeicherten Verweise bleiben über
GetInvoiceReferencedDocumentlesbar. Bei mehreren Abschlagsrechnungen verweisen Sie auf die letzte und nennen alle im Rechnungshinweis: Schlussrechnung mit Abschlagsrechnungen. - Profile: BG-3 gibt es ab BASIC WL, also in BASIC WL, BASIC, EN 16931 (COMFORT), EXTENDED und XRechnung. Ein Profilwechsel ist nicht nötig.
- Typcode: Einen in
ReferenceTypeCodeübergebenen Wert speichert die SDK in Großbuchstaben als Typcode (lesbar überGetInvoiceReferencedDocument). Alsram:TypeCodeschreibt sie ihn nur im Profil EXTENDED; in BASIC, EN 16931 und XRechnung, die in BG-3 nur Nummer und Datum kennen, lässt sie ihn weg. In älteren Versionen der SDK wurde der Typcode in jedes Profil geschrieben – übergeben Sie dort außerhalb von EXTENDED einen Leerstring. - Der Verweis auf eine frühere Rechnung je Position ist ein eigenes Feld der Positionsebene und wird nicht mit
AddInvoiceReferencedDocumentgesetzt. - Mehr zum Anlass solcher Verweise: Rechnungskorrektur und Gutschrift.
Häufige Fragen
Wie verweise ich in einer Gutschrift auf die ursprüngliche Rechnung?
Mit AddInvoiceReferencedDocument und der Nummer der ursprünglichen Rechnung (BT-25), am besten mit Rechnungsdatum (BT-26). Den Rechnungstyp BT-3 setzen Sie zusätzlich auf Gutschrift.
Kann eine Rechnung auf mehrere frühere Rechnungen verweisen?
In ZUGFeRD 2.3 / Factur-X ja: jeder Aufruf von AddInvoiceReferencedDocument fügt einen weiteren Verweis hinzu. In XRechnung 3.0 ist im Rechnungskopf nur ein Verweis erlaubt; weitere Rechnungen nennen Sie im Rechnungshinweis.
Wie lese ich die referenzierten Rechnungen aus?
Mit einer Schleife von 0 bis InvoiceReferencedDocuments - 1 und GetInvoiceReferencedDocument.