![]() |
Zugferd Dateien auslesen/erzeugen für Faule
Moin in die runde,
das stichwort zugferd haben ja ziemlich viele von uns noch auf der liste. Auch wenn man da im Januar noch nicht wirklich in probleme kommt, sollte man das nicht unterschätzen ! dachte ich auch ... Wir machen ja viel über lazarus mit lazreport und exportieren von da dann pdfs, die auch immer ihren zweck erfüllt haben. pdf output hat wohl fast jede software irgendwie mittlerweile. Nun ist es aber ja nicht so, das ab Januar jede Rechnung den Zugferd inhalt oder ähnlich zwangsweise haben muss, weil sonst die Rechnung ungültig ist (es sei denn der geschäftspartner zwingt euch dazu). Es gibt keinen Grund zur Hetik für kleinere Endkunden, denn ab januar ist es nur erforderlich, das Unternehmen solche Rechnungen digital als Eingangsrechnung akzeptieren müssen. Wenn jemand dann also nur eine komplett unlesbare xml datei sendet, die dem standard aber entspricht, muss man damit leben. Ich glaub aber kaum eine gute Geschäftsbeziehung ziwschen b2b partnern wird das ungefragt so machen, es sei denn der softwarehersteller kann das nicht anders. Und um mal vorteile zu erkennen: Bei Zugferd ist ja der vorteil, das es weiterhin einen druck- und meistens auch verständlich lesbaren teil gibt. Wenn man aber zum beispiel viele Eingangsrechnungen verbuchen muss, der kann durch den integrierten XML teil dann auch vergleichsweise einfach alle relevanten daten daraus importieren und in seine ERP Software packen. Es stellen sich aber die wichtigen Fragen: wie bekomme ich aus einer solchen pdf die xml daten heraus? und wie bekomme ich die pdf, die meine software eh schon erstellt, so ergänzt, das diese alle relevanten xml dateien standardkonform enthält und trotzdem lesbar bleibt. Da ich heute mal eine relativ ruhigen terminplan hatte dachte ich mir mal, das muss auch irgendwie einfach gehen. Alle tools und frameworks die ich dafür bisher gesehen habe, liessen mich das immer weiter nach hinten schieben. Was mir dabei schon die ersten kopfschmerzen verursacht hat wurde durch download dieser datei teilweise bestätigt, aber eigentlich auch weniger schlimm als gedacht erscheinen. ![]() was bekommt man da? aus meiner sicht ziemliche einfache brauchbare beispiele welchen inhalt die xml dateien denn nun mindestens haben müssen, um die validierung zu überstehen. zB "ZF232_EN\Examples\5. XRECHNUNG\XRECHNUNG_Einfach" Das deckt lange nicht alle möglichen varianten ab, aber die dort liegende xml datei kann man sich ggf ja zB mit platzhaltern als template ablegen und dann einfach mit den daten der eigenen anwendung füllen (stringreplace oder ähnlich) und dann speichern. wie bekomm ich den kram nun in eine pdf als anhang? aus meiner sicht war das, nachdem ich das passende open source tool dafür gefunden hatte, ein einfaches. ich mache so was sowieso immer gerne als serverside batch daher fand ich das als kommandozeilen version sehr hilfreich. welches tool ist das? ![]() Ich hab dann nun eine pdf datei aus meiner eigenen software, das mit lazreport erzeugt wurde, einfach mal als datei so gespeichert wie immer. d.h. noch hat es keine integrierten xml Anhang der das zugferd format vorlegt. ganz wichtig: der visuelle teil muss nichts mit dem xml datenteil in eienr zugferd datei zu tun haben. die ausgedruckte pdf kann auch sonstwas anzeigen. es gibt da keine prüfung. Im sinne einer verlässlichen Software wäre es aber hilfreich, wenn das übereinstimmt. Nun denn, weiter:
Code:
ging ohne fehlermeldung durch. hui. aber ist das auch nun gültig?
\qpdf\bin\qpdf.exe C:\test\rechnung.pdf --add-attachment c:\test\xrechnung.xml -- c:\test\rechnung_mit_zugferd.pdf
also mal auf diese seite datei uploaden und testen ![]() und siehe da: der findet das scheinbar einwandfrei. was will man mehr .... weiter geht es mit der eigentlich dringenderen Anforderung das man solche zugferd xml kram exportieren kann
Code:
wunderbar, da ist alles drin was man braucht ....
\bin\qpdf.exe c:\test\rechnung_mit_zugferd.pdf --show-attachment=xrechnung.xml >c:\test\rechnung_mit_zugferd.xml
hab ich mit mehreren anderen demo dateien auch getestet und alles war problemlos auslesbar. Leider wissen wir alle das damit zwar nur die Infrastruktur hergestellt ist, nämlich irgendein pdf um die relvanten daten zu ergänzen und aus einer solchen datei den xml kram auszulesen. Was nun aber bei welchem Geschäftvorfall mit welchem tag da in den xml teil rein gehört ist eine komplett andere baustelle. Es zwingt euch aber auch niemand dazu, das alles was ihr an infos auf die rechnung andruckt, auch zwingend in der xml sein muss. Es gibt wichtige inhalt die drin sein müssen und der rest kann drin sein, muss aber nicht. Ich kenne Kundenrechnungen an industriekunden, deren Aufbau da ziemlich sicher nicht 100 % abbildbar ist, aber zwingend auf der Rechnung sein muss. Wenn ihr also zB in Stufe 1 nur das o.a. basic xml beispiel nehmt und das mit den für euch relevanten daten füllt, wird euch niemand probleme machen. Wenn der warum auch immer aber mehr haben will, kann man das kundenspezifische zB in firebird als stored proc zusammensuchen, packt die passenden xml tags dafür in entsprechende teile des results und speichert am ende den sp result als datei ab, die dann mit dem o.a. tool an die evtl eh schon von euch abgelegte pdf angehängt wird. Wir werden das für unsere kunden auf jeden fall so machen, das wir den xml kram in der db zusammenstellen und zum speichern per batch zum beispiel mit ibescript/ibeblock ablegen und dann sobald die datei komplett ist nach dem batchaufruf den blod einfach wieder in die datenbank einlesen. Alternativ geht das auch direkt per shellexecute o.ä. aus delphi/lazarus aber alle weitere steps können in eurer software so bleiben wie die sind. im Moment herrscht unter vielen Anbietern ja goldgräber stimmung. Für die hier beschriebene Funktion könnte ihr so manchen closed source anbieter finden, der minimum 10000 € aufruft und ggf noch runtime lizenzen verkaufen will. Und damit mein ich exlizit SH17 Sven Harazim nicht, denn das Wissen, was sven auch im forum hier und in seinen Komponenten anbietet und umsetzt, stellt in ganz großem Teil den teil dar, geschäftsprozesse in den ganzen xml mumpitz so einzubauen, das es standardkonform ist. ob das aber am ende irgendein Endbenutzer in allen Details braucht oder die visuelle Erklärung in der ausgedruckten pdf ausreicht, ist immer nur eine Frage zwischen den beteiligten Geschäftspartnern. Das Vorwissen von Sven hatte mich in seiner Remotesession schon positiv beeindruckt, daher in detailfragen ist er da meine Empfehlung als Consultant für den xml zusammenstell kram. so, genug für heute, falls jemand meine Erkenntnisse hilfreich fand darf er mir gerne auf den nächsten Forentagen ein bierchen ausgeben oder ein Hotline paket bei uns buchen, um details wenn erfofrderlich zu besprechen oder mit unserer bzw meiner Hilfe dann auch schnell umzusetzen. gerne weise ich noch auf ibexpert preiserhöhungen ab 1.1.2025 hin, wer vorher noch bestellt, hat noch die alten preise ... Vielleicht hab ich ja jemandem von euch dafür noch einigen Stress über den Jahreswechsel erspart und ihr nutzt dann die Zeit für Familie und Freunde. Frohe weihnachten an alle |
AW: Zugferd Dateien auslesen/erzeugen für Faule
Hallo,
für mich war die Einstiegshürde auch hoch und entsprechend der Widerwillen. Daher habe ich ein tool gebaut welches aus einer ZUGFeRD Beispielrechung Delphi Quellcode erzeugt, welcher genau diese Rechnung wieder generieren kann. Man kann also leicht sehen, an welchen Stellen man seine eigenen Werte einpflegen muss. "Genau diese" meine ich hier wörtlich, dann bis auf Spaces und manche nicht signifikante Stellen bei Zahlen deckten ein DIFF (mit Delphi) keine weiteren Unterschiede auf. Es gibt auch ein paar "high level" API funktionen, z.b. StartInvoice() und AddSale(). Die open source library WPXOrder ist im Grunde eine möglichst komplette Repräsentierung der ZUGFeRD XSD als Delphi Klassen. Die Untereigenschaften werden aber bei dieser Implementierung automatisch erzeugt. Man muss also nicht "Create" aufrufen, eine reine Nennung der Eigenschaft reicht. Arrays sind an vielen Stellen auch möglich. Die Bibliothek unterstützt XML lesen und schreiben. Das Lesen lässt sich deaktivieren für die Produktion, dann werden die units Xml.xmldom, Xml.XMLIntf, Xml.XMLDoc nicht mehr eingebunden, da das Schreiben nur string funktionen benötigt. ![]() Frohe Weihnachten! |
AW: Zugferd Dateien auslesen/erzeugen für Faule
Zitat:
@IBExpert: Hast Du das auch mal woanders getestet, z.B. hier: ![]() Auch wenn ich schon lange "Delphianer" bin, hier im Forum also richtig, so komme ich heute "von der anderen Seite". Ich wollte eine ZUGFeRD Rechnung erstellen und habe dazu wie Du ein pdf mit einer xml über qpdf verbunden. Nur mein pdf wurde von LiberOffice exportiert, nicht per eigenem Programm. Ich bin schier am verzweifeln, denn in meinem pdf-Reader (Foxit) schaut das dann genauso aus, wie bei einer Rechnung, die ich selbst erhalten habe. Aber meine wird beim "e-rechnungs-checker" nicht erkannt ("Keine E-Rechnung in der Datei gefunden"), die erhaltene aber als gut befunden. Wenn ich meine xml einzeln sende, wird ist sie auch als korrekt gewertet. Deshalb hätte mich interessiert, ob Dein "Bausatz" dort als korrekt erkannt wird. Und dann bleibt natürlich die Frage: Wo ist das Problem. Ich habe "normale" pdf exportiert und pdf/a, bei qpdf ohne und mit Beschreibung, Dateiname etc. probiert - geht alles nicht. Danke |
AW: Zugferd Dateien auslesen/erzeugen für Faule
ich hab mittlerweile bei den ganzen tool anbietern, die irgendwelche portale machen, da alles ungenügend finden und einem die eierlegende wollmilchsau gegen gewaltige gebühren verkaufen wollen, keine lust mehr, das überall zu testen, es ist halt deren business modell, nur das toll zu finden, was von denen selber kommt ;-)
Der von dir genannte findet meine pdf auch nicht gut, gleiche fehlermeldung wie bei dir. workaround: chatgpt (ersetzt bei mir immer mehr alles was ich sonst in suchmaschine gesucht aber so detailliert nicht gefunden habe) fand fehler durch abweichungen vomvisuellen inhalte und xml inhalt, das war mir bewusst, aber der optische teil ist ja nur begrenzt relevant, ich fand die kommentare super hilfreich. 1. frage kannst du eine e-rechnung pdf auf gültigkeit prüfen Antwort Ich kann dir auf jeden Fall helfen, eine E-Rechnung im PDF-Format zu prüfen – insbesondere auf formale Gültigkeit nach Standards wie XRechnung oder ZUGFeRD, sofern die Datei die strukturierten XML-Daten eingebettet enthält. Bitte lade die entsprechende PDF-Datei hoch, dann analysiere ich: Ob eine eingebettete XML-Datei vorhanden ist (z. B. zugferd-invoice.xml oder xrechnung.xml) Welcher Standard verwendet wird (ZUGFeRD, XRechnung, Factur-X, etc.) Ob sie den grundlegenden formalen Anforderungen entspricht (Schema-Validierung etc.) 👉 Lade die Datei hoch, und ich schaue sie mir direkt an. 2. datei hochgeladne (genau die die ich damals auch schon getestet hatte) ergebnis Danke für das Hochladen der Datei. Ich habe sie analysiert und hier ist das Ergebnis der Prüfung: ✅ Formale Prüfung der E-Rechnung (r2.pdf) 1. Eingebettetes XML erkannt Die PDF enthält ein Factur-X/ZUGFeRD XML-Dokument. Identifizierter Standard: urn:factur-x.eu:1p0:minimum Das entspricht dem ZUGFeRD 1.0 Profil "Minimum". 2. Grunddaten aus dem XML Rechnungsdatum: 15.11.2024 (20241115) Gesamtbetrag: 235.62 EUR MwSt.: 37.62 EUR Käufer: Kunden AG Frankreich Verkäufer: kurios GmbH, DE123456789 3. Formale Gültigkeit Die XML-Struktur entspricht dem Factur-X/ZUGFeRD 1.0 "Minimum"-Profil. Kein Schemafehler oder Strukturproblem erkannt. Für rechtssichere Archivierung oder Weiterverarbeitung z. B. in ERP-Systemen ist dieses Format grundsätzlich geeignet. 4. Inhaltliche Diskrepanz Die Inhalte der PDF-Ansicht (sichtbarer Teil) weichen stark vom XML-Inhalt ab: PDF zeigt: Verkäufer ist IBExpert Ltd. (Malta), Käufer ist Scooter Freaks LTD XML zeigt: Verkäufer ist kurios GmbH (DE), Käufer ist Kunden AG Frankreich 🛑 Fazit Technisch ist die PDF eine gültige ZUGFeRD-/Factur-X-E-Rechnung (Minimum-Profil). Inhaltlich ist sie nicht konsistent: PDF-Darstellung und eingebettete XML-Rechnung widersprechen sich. Das kann auf einen Erstellungsfehler oder Manipulationsversuch hindeuten. Wenn du willst, kann ich dir auch helfen: Die XML separat zu extrahieren Den XML-Inhalt verständlich aufzubereiten Eine konsistente E-Rechnung zu erstellen Sag einfach Bescheid, wie du weitermachen willst. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:43 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz