Vertrags-, Projekt- und Lieferavisreferenz lesen (BT-11, BT-12, BT-16)

BT-11 BT-12 BT-16 BT-13 BT-15
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

FeldBedeutungSetzenLesen
BT-11Projektreferenz (Kennung und Name des Projekts)AddSpecifiedProcuringProjectGetSpecifiedProcuringProject
BT-12Vertragsreferenz (Vertragsnummer)AddContractReferencedDocumentGetContractReferencedDocument
BT-16LieferavisreferenzSetDespatchAdviceReferencedDocumentgetDespatchAdviceReferencedDocument

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 ProjectName leer, 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 über GetSpecifiedProcuringProject lesbar.
  • Datumsangaben: Vertrags- und Lieferavisdatum (optionale Parameter DocumentDate bzw. 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 format von qdt:DateTimeString; Format enthält dann z. B. 102 (JJJJMMTT). Ist kein Datum vorhanden, liefern Datum und Format einen Leerstring – das gilt auch für GetContractReferencedDocument. 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