Erstellung einer ZUGFeRD/XRechnung XML Datei

Um Anfangsschwierigkeiten bei der Benutzung unseres SDK zu verringern haben wir ein neues Beispiel erstellt um eine  komplette ZUGFeRD XML Datei zu erstellen.

NEU: Beispiel fuer VB6 / VBA / .NET: Erstellung einer ZUGFeRD/X-Rechnung XML Datei via COM Schnittstelle (VB6 / VBA) oder .NET

Wir haben zur Erstellung des Beispiels die Version 8.0.0.31 der ZUGFeRD Bibliothek benutzt. Stellen Sie sicher mindestens die gleiche Version installiert zu haben.

Das Ergebnis haben wir mit dem freien Kosit Validator und auch dem Validator der Bahn ueberprueft.

Referenzieren

Sie müssen natürlich unsere ZUGFeRD-Assembly referenzieren und per „Imports Aloaha_ZUGFeRD“ in Ihr Projekt integrieren.

Download

Sie koennen das komplette Demo Projekt auch von folgender URL laden:
https://www.aloaha.com/download/ZUGFeRDSample.zip

Es ist immer eine gute Idee ein Backup vom “CultureInfo” zu machen

Dim culture As System.Globalization.CultureInfo = System.Globalization.CultureInfo.GetCultureInfo("de-DE")

Dim culturebackup As System.Globalization.CultureInfo = System.Threading.Thread.CurrentThread.CurrentCulture

System.Threading.Thread.CurrentThread.CurrentCulture = culture

Erstellen Sie das ZUGFeRD Objekt

Dim alo As New Aloaha_ZUGFeRD.XML

Dim zug As Aloaha_ZUGFeRD.iXML.ZUGFeRD = Nothing

'Testen Sie ob die Lizenz gueltig ist. Eine Testlizenz erhalten Sie von info@aloaha.com

If alo.Licensed("WXH4GUFN67V2JKRNLLSVYU5OHM") = False Then
     MsgBox("Not Licensed")
End If

Initialisieren Sie die Bibliothek

Dim ProfileType As Aloaha_ZUGFeRD.iXML.ZUGFeRDProfile = Aloaha_ZUGFeRD.iXML.ZUGFeRDProfile.comfort
Dim TestIndicator As Boolean = False
Dim LicenseKey As String = "WXH4GUFN67V2JKRNLLSVYU5OHM"
Dim alo As Aloaha_ZUGFeRD.XML = New Aloaha_ZUGFeRD.XML(ProfileType, TestIndicator, LicenseKey)
alo.ZUGfeRDStandard = Aloaha_ZUGFeRD.iXML.ZUGFeRDVersion.xInvoice

Optional koennen Sie das Kosit Format aktivieren

'alo.isKOSIT = True

Erstellen Sie die Rechnung mit diversen Startparametern

Dim Currenty As String = "EUR"                             
Dim InvoiceID As String = "47110815"
Dim InvoiceDate As String = alo.TodayDate.Document_Date 
Dim InvoiceNote As String = "Rechnung gemäß Bestellung" 
alo.CreateInvoice(InvoiceID, InvoiceNote, InvoiceDate, alo.TodayDate.Document_DateFormat, , , Currenty)
alo.InvoiceCurrencyCode = Currenty
alo.Document_ID = InvoiceID 
alo.Document_Type = Aloaha_ZUGFeRD.iXML.DocumentType.Invoice

'BT-23
alo.BusinessProcessSpecifiedDocumentContextParameter = "urn:fdc:peppol.eu:2017:poacc:billing:01:1.0"

Definieren Sie einige allgemeine Eigenschaften

alo.AddSpecifiedProcuringProject("ProjectID", "ProjectName") 
alo.AddBuyerAssignedID("Bestellnummer") 
Dim BookingReference As String = "Buchungsreferenz" 
Dim BookingReferenceTypeocde As String = ""
alo.AddReceivableSpecifiedTradeAccountingAccount(BookingReference, BookingReferenceTypeocde)

Erstellen Sie den Kaeufer

alo.WriteBuyer("Buyer Limited","49479","Pembroke","Gruener Weg 1")
alo.BuyerCountry = "DE"
alo.BuyerName = "Buyer Limited" 
alo.BuyerPostCode = "49479"
alo.BuyerID = "KundenNummer"
alo.WriteBuyerContactPerson("John Doe", "Einkauf", "stefan@aloaha.com", "+4900000")
alo.BuyerPersonalName = "John Doe"
alo.BuyerDepartment = "Purchase Department"
alo.BuyerEmail = "info@aloaha.com"
alo.BuyerTelephone = "+490000"
alo.BuyerCity = "Pembroke" 
alo.BuyerAddressLine1 = "Helogland"
alo.BuyerAddressLine2 = "Triq Gio Felice Inglott" 

'BT-34, BT-49
alo.set_URIUniversalCommunication("info@zugferdpro.com", "EM", False)

Erstellen Sie den Verkaeufer

alo.WriteSeller("Aloaha Limited", "PBK1131", "Pembroke", "Helgoland", "45, Triq Gio Felice Inglott", "MT", "MT000000000")
alo.SellerDepartment = "Sales"
alo.SellerName = "Aloaha Limited"
alo.SellerCity = "Pembroke"
alo.SellerAddressLine1 = "Helgoland"
alo.SellerAddressLine2 = "Triq Gio Felice Inglott"
alo.SellerCountry = "MT"
alo.SellerPostCode = "PBK1131"
alo.SellerID = "4711"
alo.WriteSellerContactPerson("John Doe", "Verkauf", "stefan@aloaha.com", "+49 1111111")
alo.SellerPersonalName = "John Doe"          'BT-41
alo.SellerDepartment = "Sales Department"
alo.SellerEmail = "stefan@aloaha.com"        'BT-43
alo.SellerTelephone = "+490000"              'BT-42

'BT-34, BT-49, PEPPOL-EN16931-R020
alo.set_URIUniversalCommunication("info@zugferdpro.com", "EM", true)

Definieren Sie die Zahlungsmethoden

alo.AddPaymentMeans(alo.PaymentMeansCode(Aloaha_ZUGFeRD.iXML.Payment_Means.SEPA_credit_transfer), "Sepa Credit Transfer", "MT000000000", "account name", "", "BIC", "", "", False)

Dim PaymentTermsDescription As String = "Zahlbar sofort und ohne Abzug" 
Dim DueDate As String = alo.TodayDate.Document_Date 
Dim DirectDebitMandateID As String = "" 
alo.AddTradePaymentTerms(PaymentTermsDescription, DueDate, alo.TodayDate.Document_DateFormat, DirectDebitMandateID)

alo.PaymentReference = "Invoice No. INV08154711"

alo.SetDespatchAdviceReferencedDocument("Lieferavisreferenz")

Fuegen Sie ein Produkt der Rechnung an

alo.AddProduct_Comfort("1", "nicht rabattierfähig", "TB100A4", "20.0000", "H87", "Trennblätter ", "A4", "9.9", Currenty, "", "", False, "", "", "", "9,9", "eur", "", "", "vat", "s", "19.00", "", "198.00", "EUR", "globalid", "0160")

Note: Einheiten muessen genau spezifiziert sein: UnitCodes fuer die Menge in ZUGFeRD / XRechnung / XInvoice

Die Rechnungsbetraege muessen natuerlich enthalten sein:

alo.WriteTotals("198.00", "235.62", "235.62", "198.00", "37.62", "0,0", "0.00")

‘Steuerinformationen duerfen natuerlich nicht fehlen

Dim CalculatedAmount As String = "37.62"
Dim BasisAmount As String = "198.00"
Dim TaxTypeCode As String = "VAT"
Dim CategoryCode As String = alo.VatCategoryCode(Aloaha_ZUGFeRD.iXML.VAT_Category.StandardRate)
Dim ApplicablePercent As String = "19.00"
Dim TaxPointDate As String = "" 
Dim DueDateTypeCode As String = "" 
Dim ExemptionReason As String = ""

alo.AddTradeTax(CalculatedAmount, Currenty, BasisAmount, Currenty, TaxTypeCode, CategoryCode, ApplicablePercent, ExemptionReason, TaxPointDate, "", DueDateTypeCode)

Sie koennen sich auch direkt die Struktur ansehen und editieren

zug = alo.ZUGFeRD_Structure
'Felder editieren
'alo.ZUGFeRD_Structure = zug

Speichern Sie das XML

alo.UseASIIOnSave = False
alo.SaveWithoutUTF8Header = False
If System.IO.File.Exists("c:\temp\test1.xml") = True Then System.IO.File.Delete("c:\temp\test1.xml")
alo.SaveXML("c:\temp\test1.xml")

CultureInfo zurueckschreiben

System.Threading.Thread.CurrentThread.CurrentCulture = culturebackup

Als Ergebnis sollten Sie folgende Datei erhalten:

Sollten Sie Fragen haben kontaktieren Sie bitte info@aloaha.com