Hallöle...
Zitat:
Auf irgendeine Weise MUSS unbedingt validiert werden, entweder durch einen selbst
...da gehe ich mit.
Zitat:
Was passiert eigentlich, wenn die
XML dann mal "kaputt" ist?
...die Frage stellt nicht, weil IMMER validiert wird.
Zitat:
Ich meine, ein Prozess der durchgetestet worden ist, muss der ständig wieder überprüft werden?
...auch der Gesetzgeber hat ggf. Änderungen. Deshalb muß auch der Validator angepaßt werden, um die Rechnungen zu prüfen.
Zitat:
Aber ist es nicht so, dass eigentlich der Empfänger validieren muss, sonst darf er kann er das nicht weiterverarbeiten?
[Meine Meinung] Nein. Aber er kann validieren, wenn er möchte, um sicher zu sein. Das sollte die Software, die er verwendet, leisten können. Da sind wir wieder bei der Frage...was können die Anderen. Bei denen sind es dann Eingangsrechnungen.

PS: Die Eingangsprüfung sollte auch eine Prüfung des PDF "Rechnungsbetrages" zum eingebetten
XML beinhalten. (Manipulation der Rechnung auf dem Weg)...ich weiß nicht ob das jemand macht.
Zitat:
Sollte nicht schon das Erzeugen einer nicht korrekt Rechnung wie im normalen Rechnungsdruck aufgehalten werden? Es werden doch nur bestehende Rechnungsdaten in eine
XML-Struktur gewandelt.
Grundsätzlich hast du mit der
XML Struktur Recht. Du brauchst aber auch das PDF. Aber...
Problem 1:
Die
XML muß mit dem PDF gemerged werden. Meistens über ein externes Tool. Beim PDF müssen verschiedene Voraussetzungen stimmen. Am Ende ist es ein PDF/A [Achtung Werbung

] Wir verwenden DynaPDF.
Problem 2:
Die Valdierung nach der Rechnungserstellung.
Zitat:
Von Sachbearbeitern werden hunderte Rechnungen erzeugt, die meisten davon automatisiert.
Jede Validierung eines Beleges braucht ca. 5 Sekunden (nach oben offen je nach Menge der Pos) bei uns. Bei einer Einzelrechnung fällt das Versenden im Workflow (Versenden per Mail) fast nicht auf. Dauert aber länger als sonst.
Wir haben aber manchmal (selten

) Rechnungsläufe bis zu 1300 Rechnungen am Tag. Die Validierung braucht bei diesem Volumen 6h+.

Soll der Mitarbeiter nach Hause gehen? Das ist im normalen Workflow nicht abzubilden.
Da muß man sich was einfallen lassen...
* Thread in der Anwendung, seperates eigenständiges Tool was den Versand übernimmt.
* Rückmeldungen der Validierung speichern und Fehler ggf. anzeigen.
Zitat:
Da ich beim Validieren anscheinend die Java-Runtime Nachteile (also etwas, das ich gerade bei der Wahl Delphi als Sprache vermeiden wollte) hereinhole, habe ich dabei Bauchschmerzen
...wir haben die "Struktur" (Bild) auf dem Server abgelegt. Keine Probleme. Für den Aufruf haben wir eine Klasse erstellt die Ergebnisse "kapselt".
https://github.com/LandrixSoftware/X...elphi/releases
Delphi-Quellcode:
// Auszug unvollständig
function TXInvoice.Validation(
XML:
string): Boolean;
var
ValidationHelper: IXRechnungValidationHelperJava;
XMLStream: TStringStream;
begin
Result := False;
if XML > '
'
then
begin
CoInitialize(
nil);
XMLStream := TStringStream.Create(
XML, TEncoding.UTF8);
try
FInvoiceVersion := TXRechnungValidationHelper.GetXRechnungVersion(XMLStream);
ValidationHelper := GetXRechnungValidationHelperJava;
ValidationHelper.SetJavaRuntimeEnvironmentPath(FJavaRuntimeEnvironmentPath);
ValidationHelper.SetValidatorLibPath(FValidatorLibPath);
if FInvoiceVersion
in [XRechnungVersion_230_UBL, XRechnungVersion_230_UNCEFACT]
then
begin
ValidationHelper.SetValidatorConfigurationPath(FValidatorConfigurationPath23x);
end
else
begin
ValidationHelper.SetValidatorConfigurationPath(FValidatorConfigurationPath30x);
end;
Result := ValidationHelper.Validate(
XML, FCmdOutPut, FXmlResult, FHtmlResult);
finally
XMLStream.Free;
CoUninitialize;
end;
end;
end;