- Thema
- VB.NET
- SDK-Mitglieder
- AddContractReferencedDocument() AddSpecifiedProcuringProject() FillZUGFeRD_Structure() GetContractReferencedDocument() getDespatchAdviceReferencedDocument() GetSpecifiedProcuringProject() SetDespatchAdviceReferencedDocument()
- Business Terms
- BT-11 Projektreferenz BT-12 Vertragsreferenz BT-16 Lieferavisreferenz BT-13 Bestellreferenz BT-15 Referenz auf die Wareneingangsmeldung
- Codebeispiele
- VB.NET
- Veröffentlicht
Drei Referenzen im Rechnungskopf helfen dem Empfänger, eine Rechnung ohne Rückfrage zuzuordnen: die Projektreferenz (BT-11), die Vertragsreferenz (BT-12) und die Lieferavisreferenz (BT-16), also die Nummer der Versandanzeige. Für jede gibt es im Aloaha ZUGFeRD SDK eine Methode zum Setzen und eine zum Lesen. Dieser Artikel zeigt beide Seiten und worauf Sie beim Auslesen eingehender Rechnungen achten sollten.
Felder und Methoden
| Feld | Bedeutung | Setzen | Lesen |
|---|---|---|---|
| BT-11 | Projektreferenz (Kennung und Name des Projekts) | AddSpecifiedProcuringProject | GetSpecifiedProcuringProject |
| BT-12 | Vertragsreferenz (Vertragsnummer) | AddContractReferencedDocument | GetContractReferencedDocument |
| BT-16 | Lieferavisreferenz | SetDespatchAdviceReferencedDocument | getDespatchAdviceReferencedDocument |
Die Bestellreferenz (BT-13) und die Wareneingangsmeldung (BT-15) gehören thematisch dazu; zu BT-15 siehe Wareneingangsmeldung referenzieren.
Referenzen setzen
VB.NET
Dim alo As New Aloaha_ZUGFeRD.XML(Aloaha_ZUGFeRD.iXML.ZUGFeRDProfile.comfort, False, "IHR-LIZENZSCHLUESSEL")
' ... Rechnungskopf, Parteien und Positionen setzen ...
' BT-11: Projektkennung und Projektname
alo.AddSpecifiedProcuringProject("PRJ-2026-042", "Neubau Lager Musterstadt")
' BT-12: Vertragsnummer
alo.AddContractReferencedDocument("RV-2025-117")
' BT-16: Nummer des Lieferavis
alo.SetDespatchAdviceReferencedDocument("LA-2026-5531")
VBA / VB6 (COM)
alo.AddSpecifiedProcuringProject "PRJ-2026-042", "Neubau Lager Musterstadt"
alo.AddContractReferencedDocument "RV-2025-117"
alo.SetDespatchAdviceReferencedDocument "LA-2026-5531"
Alle drei Methoden setzen jeweils einen Wert; ein zweiter Aufruf überschreibt den ersten. Leere Argumente lassen bereits gesetzte Werte unverändert – eine Referenz lässt sich also nicht durch Übergabe eines Leerstrings löschen. Ältere Kurzanleitungen zu den Setzern: Vertragsreferenz, Projekt, Lieferavis.
Referenzen auslesen
Nach FillZUGFeRD_Structure liefern die Lesemethoden die Werte über ByRef-Parameter. getDespatchAdviceReferencedDocument ist eine Funktion: Sie gibt die Nummer des Lieferavis direkt zurück und füllt Datum und Datumsformat optional per Referenz. Ist eine Referenz nicht vorhanden, erhalten Sie jeweils einen Leerstring.
VB.NET
Dim alo As New Aloaha_ZUGFeRD.XML
If alo.FillZUGFeRD_Structure("C:\Rechnungen\eingang.xml", "IHR-LIZENZSCHLUESSEL") Then
' BT-11
Dim ProjektID As String = "", ProjektName As String = ""
alo.GetSpecifiedProcuringProject(ProjektID, ProjektName)
' BT-12
Dim Vertrag As String = "", VertragDatum As String = "", VertragFormat As String = ""
alo.GetContractReferencedDocument(Vertrag, VertragDatum, VertragFormat)
' BT-16
Dim AvisDatum As String = "", AvisFormat As String = ""
Dim Lieferavis As String = alo.getDespatchAdviceReferencedDocument(AvisDatum, AvisFormat)
If ProjektID <> "" Then Console.WriteLine("Projekt: " & ProjektID & " (" & ProjektName & ")")
If Vertrag <> "" Then Console.WriteLine("Vertrag: " & Vertrag)
If Lieferavis <> "" Then Console.WriteLine("Lieferavis: " & Lieferavis & " " & AvisDatum)
End If
VBA / VB6 (COM)
Dim ProjektID As String, ProjektName As String
Dim Vertrag As String, Lieferavis As String
alo.GetSpecifiedProcuringProject ProjektID, ProjektName
alo.GetContractReferencedDocument Vertrag
Lieferavis = alo.getDespatchAdviceReferencedDocument()
Debug.Print "Projekt: "; ProjektID; " / "; ProjektName
Debug.Print "Vertrag: "; Vertrag
Debug.Print "Lieferavis: "; Lieferavis
Hinweise
- Profile: Vertragsreferenz (BT-12) und Lieferavisreferenz (BT-16) gibt es ab BASIC WL. Die Projektreferenz (BT-11) gibt es erst ab EN 16931 (COMFORT); das SDK stellt das Profil dafür nicht selbst um – wählen Sie mindestens COMFORT oder XRechnung.
- Projektname: Im XML ist zum Projekt immer auch ein Name vorgeschrieben. Lassen Sie
ProjectNameleer, schreibt das SDK die Projektkennung zusätzlich als Namen. Ein Projekt ohne Kennung wird nicht geschrieben; ein gesetzter Name bleibt aber im Objekt und ist überGetSpecifiedProcuringProjectlesbar. - Datumsangaben: Vertrags- und Lieferavisdatum (optionale Parameter
DocumentDatebzw.FormattedIssueDateTime) sind keine Felder der EN 16931. Das SDK schreibt sie, wenn Sie sie angeben; für EN 16931 und XRechnung genügt die Nummer. - Datumsformat beim Lesen: Beim Einlesen übernimmt das SDK das Datumsformat des Lieferavis aus dem Attribut
formatvonqdt:DateTimeString;Formatenthält dann z. B.102(JJJJMMTT). Ist kein Datum vorhanden, liefern Datum und Format einen Leerstring – das gilt auch fürGetContractReferencedDocument. In älteren Versionen des SDK konnte das Format des Lieferavis trotz Datum leer sein; werten Sie das Datum dann als JJJJMMTT (Format 102).
Häufige Fragen
Wie lese ich die Vertragsnummer aus einer XRechnung aus?
Mit GetContractReferencedDocument. Der erste Parameter enthält danach die Vertragsreferenz BT-12 oder einen Leerstring, wenn keine angegeben ist.
Wo finde ich die Lieferavisnummer einer eingehenden Rechnung?
getDespatchAdviceReferencedDocument gibt die Lieferavisreferenz BT-16 als Rückgabewert zurück.
Muss ich zur Projektreferenz einen Projektnamen angeben?
Nein. Fehlt der Name, setzt das SDK beim Speichern die Projektkennung als Namen ein, damit das XML gültig bleibt.
Business Terms in diesem Artikel: BT-11 BT-12 BT-16 BT-13 BT-15