- Thema
- VB.NET
- SDK-Mitglieder
- AddBuyerGlobalID() AddSellerGlobalID() AddShipToTradePartyGlobalID() BuyerID FillZUGFeRD_Structure() MergeXMLIntoPDF() SaveXML() Trade_ItemTradeProduct TradeItemsCount ValidateInvoiceXML()
- Business Terms
- BT-29 Kennung des Verkäufers BT-46 Kennung des Käufers BT-71 Kennung des Lieferorts BT-157 Kennung eines Artikels nach registriertem Schema BT-155 Artikelkennung des Verkäufers BT-13 Bestellreferenz BT-10 Referenz des Käufers BT-156 Artikelkennung des Käufers
- Codebeispiele
- VB.NET
- Veröffentlicht
Kurz: Wenn Ihr ERP gültige ZUGFeRD-Rechnungen schreibt, ein Kunde aber zusätzlich GLN und GTIN verlangt, müssen Sie das ERP nicht ändern. Das Aloaha ZUGFeRD SDK liest die fertige Rechnung ein, ergänzt die GLN von Verkäufer (BT-29), Käufer (BT-46) und Lieferort (BT-71) sowie die GTIN je Position (BT-157), prüft das Ergebnis und führt das neue XML wieder mit Ihrem Original-PDF zusammen. Beträge, Steuern und Positionen bleiben unverändert.
Gesucht wird das auch so: E-Rechnung nachträglich ergänzen, GLN in ZUGFeRD nachtragen, GTIN in Rechnungsposition, Global Location Number in der XRechnung, Pflichtfelder des Handels, ZUGFeRD-XML anreichern.
Welche Angaben und welche Aufrufe?
| Angabe | Feld | Schema | SDK |
|---|---|---|---|
| GLN des Verkäufers | BT-29 | 0088 | AddSellerGlobalID |
| GLN des Käufers / Rechnungsempfängers | BT-46 | 0088 | AddBuyerGlobalID |
| GLN des Waren- bzw. Leistungsempfängers (Lieferort) | BT-71 | 0088 | AddShipToTradePartyGlobalID |
| GTIN je Position | BT-157 | 0160 | Trade_ItemTradeProduct (GlobalID) |
Ablauf mit dem SDK
- ZUGFeRD-PDF aus dem ERP einlesen:
FillZUGFeRD_Structureliest das eingebettete XML direkt aus dem PDF. - GLN und GTIN ergänzen, zum Beispiel aus einer Zuordnungstabelle Kunde → GLN und Artikelnummer → GTIN.
- Neues XML speichern und gegen EN 16931 prüfen (
ValidateInvoiceXML, lokal, ohne Upload). - XML in das Original-PDF einbetten und als PDF/A-3 speichern (
MergeXMLIntoPDF). - Optional signieren, nach dem Einbetten.
' VB.NET
Dim key As String = "IHR-LIZENZSCHLUESSEL"
Dim alo As New Aloaha_ZUGFeRD.XML(key)
If alo.FillZUGFeRD_Structure("C:\Eingang\RE-1001.pdf", key) Then
alo.AddSellerGlobalID("4000001000005", "0088") ' eigene GLN
alo.BuyerID = "" ' Kundennummer durch die GLN ersetzen
alo.AddBuyerGlobalID("4012345000009", "0088") ' GLN Rechnungsempfänger
alo.AddShipToTradePartyGlobalID("4012345000016", "0088") ' GLN Warenempfänger
For i As Integer = 0 To alo.TradeItemsCount - 1
Dim tp = alo.Trade_ItemTradeProduct(i)
tp.GlobalID.GlobalID = GTINZuArtikel(tp.SellerAssignedID) ' Ihre Zuordnung
tp.GlobalID.GlobalID_schemeID = "0160"
alo.Trade_ItemTradeProduct(i) = tp
Next
alo.SaveXML("C:\Arbeit\RE-1001.xml", key)
If alo.ValidateInvoiceXML("C:\Arbeit\RE-1001.xml", key) Then
alo.MergeXMLIntoPDF("C:\Arbeit\RE-1001.xml", "C:\Layout\RE-1001.pdf", "C:\Ausgang\RE-1001.pdf", True, "", key)
End If
End If
Wir haben diesen Ablauf mit einer Testrechnung geprüft: Die ergänzte Rechnung ist nach EN 16931 gültig, ohne Fehler und ohne Warnungen (eingebauter Validator des SDK und Mustang).
Worauf Sie achten sollten
- Kundennummer und GLN zugleich: Schreibt das ERP bereits eine Kundennummer als Käuferkennung, ersetzen Sie sie durch die GLN (
alo.BuyerID = ""). Sonst meldet der Validator die WarnungCII-SR-450. - GTIN nur mit Schema: Eine GTIN ohne Schema-Kennung verletzt
BR-64. Setzen SieGlobalID_schemeID = "0160". - Bereits eingebettetes XML: Ab Version 11.0.0.18 ersetzt
MergeXMLIntoPDFein Rechnungs-XML, das schon im PDF steckt, durch das neue. - Weitere Kundenwünsche: Bestellnummer (BT-13), Käuferreferenz (BT-10) oder Artikelnummer des Käufers (BT-156) setzen Sie auf dieselbe Weise. Welche Felder der Handel häufig verlangt, steht unter E-Rechnung bereit für den Handel.
Für einzelne Rechnungen: von Hand in der ZUGFeRD GUI
Bei wenigen Rechnungen im Monat geht es auch ohne Programmierung. Die Aloaha ZUGFeRD GUI hat ab Version 11.0.0.18 eigene Felder dafür:
- Erstelle XML > Lade XML oder PDF: die Rechnung aus dem ERP öffnen.
- Register Adressen: GLN bei Verkäufer und Käufer sowie GLN Lieferort eintragen.
- Register Rechnungsposten: die GTIN in die Spalte GTIN eintragen.
- Speicher XML, dann im Register Führe XML mit PDF zusammen das neue XML mit dem Original-PDF zusammenführen.
Für wiederkehrende Rechnungen an mehrere Kunden ist das SDK der bessere Weg: Die Ergänzung läuft automatisch und ohne Tippfehler.
Häufige Fragen
Kann ich eine fertige ZUGFeRD-Rechnung nachträglich um GLN und GTIN ergänzen?
Ja. FillZUGFeRD_Structure liest die Rechnung ein, AddSellerGlobalID, AddBuyerGlobalID und AddShipToTradePartyGlobalID setzen die GLN, Trade_ItemTradeProduct die GTIN je Position. Danach speichern Sie das XML und betten es mit MergeXMLIntoPDF wieder in das PDF ein.
Welches Schema gilt für GLN und GTIN?
0088 für die GLN (Global Location Number) und 0160 für die GTIN (Global Trade Item Number).
Ändert das SDK dabei Beträge oder Positionen?
Nein. Die Rechnung wird komplett eingelesen, es kommen nur die zusätzlichen Angaben hinzu.
Warum meldet der Validator CII-SR-450?
Weil beim Käufer sowohl eine Kennung (z. B. die Kundennummer) als auch eine GLN steht. Leeren Sie die Käuferkennung, wenn Sie die GLN setzen.
Geht das auch ohne Programmierung?
Ja, mit der Aloaha ZUGFeRD GUI ab Version 11.0.0.18: Rechnung laden, GLN im Register Adressen und GTIN im Register Rechnungsposten eintragen, XML speichern und mit dem PDF zusammenführen.
Business Terms in diesem Artikel: BT-29 BT-46 BT-71 BT-157 BT-155 BT-13 BT-10 BT-156