F: Warum erzeugt mein Delphi-, VB6- oder FoxPro-Programm eine XRechnung, obwohl ich isKOSIT nicht setze?

BT-24 BT-10 BT-49 BT-23
Thema
VB6
SDK-Mitglieder
IsKosit ZUGFeRD_Profile
Business Terms
BT-24 Spezifikationskennung BT-10 Referenz des Käufers BT-49 Elektronische Adresse des Käufers BT-23 Geschäftsprozesstyp
Codebeispiele
VB6 / VBScript (COM), Visual FoxPro
Veröffentlicht

Kurz: Wird das Objekt über COM erzeugt – CreateObject("Aloaha_ZUGFeRD.XML") in VB6, VBA und VBScript, CreateOleObject in Delphi, CREATEOBJECT in Visual FoxPro – ist der XRechnung-Modus von Haus aus eingeschaltet. Ohne weitere Angabe entsteht also eine XRechnung, auch wenn Ihr Code isKOSIT gar nicht enthält. Für eine ZUGFeRD-Rechnung an Unternehmen setzen Sie direkt nach dem Erzeugen isKOSIT = False.

Gesucht wird das auch so: xrechnung.xml statt factur-x.xml im PDF, BR-DE-15 obwohl keine XRechnung gewollt, Leitweg-ID wird verlangt, PEPPOL-EN16931-R010 bei Rechnung an ein Unternehmen, ZUGFeRD_Profile = 1 ergibt XRechnung.

Woran Sie den XRechnung-Modus erkennen

  • Im XML steht als Spezifikationskennung (BT-24) urn:cen.eu:en16931:2017#compliant#urn:xeinkauf.de:kosit:xrechnung_3.0 statt urn:cen.eu:en16931:2017.
  • Die eingebettete Datei im PDF heißt xrechnung.xml.
  • Die Prüfung meldet Pflichtangaben der XRechnung, zum Beispiel BR-DE-15 (Käuferreferenz bzw. Leitweg-ID, BT-10), PEPPOL-EN16931-R010 (elektronische Adresse des Käufers, BT-49) oder BR-DE-2 (Ansprechpartner des Verkäufers).

Lösung: isKOSIT ausdrücklich setzen

Setzen Sie die Eigenschaft direkt nach dem Erzeugen des Objekts, vor dem Profil:

// Delphi
alo := CreateOleObject('Aloaha_ZUGFeRD.XML');
alo.isKOSIT := False;              // ZUGFeRD / Factur-X statt XRechnung
alo.ZUGFeRD_Profile := 1;          // 1 = EN 16931 (COMFORT)
' VB6, VBA, VBScript
Set alo = CreateObject("Aloaha_ZUGFeRD.XML")
alo.isKOSIT = False
alo.ZUGFeRD_Profile = 1
&& Visual FoxPro
loAlo = CREATEOBJECT("Aloaha_ZUGFeRD.XML")
loAlo.isKOSIT = .F.
loAlo.ZUGFeRD_Profile = 1

Wir haben beide Fälle mit dem SDK geprüft: Ohne die Zeile schreibt das SDK die XRechnung-Kennung in BT-24, mit isKOSIT = False die Kennung urn:cen.eu:en16931:2017.

Wann welche Einstellung?

EmpfängerEinstellungErgebnis
Unternehmen (B2B)isKOSIT = False, ZUGFeRD_Profile = 1ZUGFeRD / Factur-X im Profil EN 16931, als XML oder im PDF/A-3
Behörde (B2G)isKOSIT = True, dazu LeitwegID, elektronische Adressen und AnsprechpartnerXRechnung (CII)

Welches Format zu welchem Empfänger passt, steht in der Entscheidungshilfe XRechnung oder ZUGFeRD. In .NET hängt die Voreinstellung vom verwendeten Konstruktor ab; setzen Sie isKOSIT auch dort ausdrücklich, dann ist der Code eindeutig.

Die vollständigen Beispiele: Delphi, VB6 und VBA, Visual FoxPro.

Häufige Fragen

Warum entsteht eine XRechnung, obwohl ich isKOSIT nicht gesetzt habe?

Weil das über COM erzeugte Objekt (CreateObject, CreateOleObject, CREATEOBJECT) im XRechnung-Modus startet. Setzen Sie direkt nach dem Erzeugen isKOSIT = False, dann entsteht eine ZUGFeRD-Rechnung im Profil EN 16931.

Reicht ZUGFeRD_Profile = 1 nicht aus?

Nein. ZUGFeRD_Profile wählt das Profil (1 = EN 16931), isKOSIT entscheidet zwischen XRechnung und ZUGFeRD. Beide Angaben sind unabhängig voneinander.

Warum verlangt die Prüfung eine Leitweg-ID (BR-DE-15)?

BR-DE-15 ist eine Regel der XRechnung. Sie erscheint nur, wenn die Rechnung als XRechnung gekennzeichnet ist. Bei einer Rechnung an ein Unternehmen setzen Sie isKOSIT = False, dann entfällt die Regel.

Warum heißt der Anhang im PDF xrechnung.xml?

Weil das eingebettete XML eine XRechnung ist. Bei einer ZUGFeRD-/Factur-X-Rechnung heißt der Anhang factur-x.xml.

Business Terms in diesem Artikel: BT-24 BT-10 BT-49 BT-23