Skip to main content

XML-Pipeline

Einleitung

XML-Dateien in SQUEEZE mit einer anderen techischen Pipeline verarbeitet als PDFs oder einzelne Bilder. Das liegt daran, dass nicht alle Schritte der Standard-Pipeline wie z. B. Texterkennung sinnvoll anwendbar sind.

Stattdessen werden XML-Dateien in den hier erklärten Schritten verarbeitet.

XML-Pipeline

Importierte bzw. hochgeladene Dokumente durchlaufen diese Schritte: 

  1. Im
    ersten
    Schritt,
    dem
      1. werden für PDF-Dateien mit einer eingebetteten XML weiterhin
    1. Im Schritt
      1. werden
    2. Im Schritt
        1. durchgeführt.undTabellengemappt
          SchrittBisherige PipelineNeue Pipeline (ab Version X.X.X)
          InitStep -
          1. werden hochgeladeneHochgeladene XML-Dateien,Dateien die einer entsprechen,werden in ein internes Standard-XML-Format (intermediate.xml) überführt. DieEine entstandene Datei ist die intermediate.xml
          2. für die intermediate.xmlPDF wird eineaus PDFder intermediate.xml erzeugt.
        2. - Prüfung, ob das
        3. ImDokument SchrittXRechnung (CII, UBL) oder ZUGFeRD entspricht. Transformation und Erstellung eines Zwischenformats. Das Zwischenformat dient als Basis für spezifische Schema-Extraktion und PDF-Erstellung. Benutzerdefinierte XMLs: Prüfung auf Mapping.
        4. BarcodeExtraction - Viewer-Bilder auf Basis der PDF werden erstellt.
        5. DavonDieser abgesehen,Schritt wird dieserfür XML-Dateien übersprungen.
        6. Unverändert: Dieser Schritt wird für XML-Dateien weiterhin übersprungen.
          Ocr - PDF-Dateien mit einer eingebetteten XML werden normal verarbeitet, um ein OCR-Ergebnis zu erstellen.
        7. DavonDieser abgesehen,Schritt wird dieserfür reine XML-Dateien übersprungen.
        8. Unverändert: Dieser Schritt wird für reine XML-Dateien weiterhin übersprungen.
          Classification -
        9. TODO:Die Dokumentieren,Klassifizierung dassvon dasXML-Dokumenten nochist garderzeit nicht geht
        10. möglich. Eine Exception
        11. Imwird Schrittgeworfen, wenn der betroffene Code aufgerufen wird.
        12. - Klassifikation durch Identifizieren des Mappings. Bei gefundenem Mapping: Informationen zur Dokumentenklasse werden genutzt, um die Klassifikation des Dokuments zu gestalten.
          Extraction -
        13. werden üblicheÜbliche Extraktionsmechanismen weiterhinwerden ausgeführt oder übersprungen durch die Stapelklasseneigenschaft: SkipXmlExtraction.
        14. intermediate.xml wird nach dem Übernehmen von vordefinierten Feldwerten und vor dem Ausführen von Lokatoren die intermediate.xml genutztgenutzt, um Kreditor und Mandant der XML zu ermitteln. Dieses Verhalten ist Invoice-Spezifisch.
        15. wird nach dem Ausführen von Lokatoren und vor dem Ausführen der Autovalidierung dieDie eigentliche XML-Extraktion basiert auf Basis der intermediate.xml.
        16. -
            Extraktion
          1. Hierbasiert auf dem Mapping, nicht auf einem statischen Konstrukt. Änderungen an einem Mapping in der Administration wirken sich direkt aus. Bei ZUGFeRD oder XRechnung: Nutzung der intermediate.xml und festes System-Mapping, das nicht bearbeitet oder gelöscht werden Felderkann.
        17. Und
        18. erneut
        die
        XML
        als
        PDF
        gerendert?!
      1.  
      2. Extraktion von XMLs

        > TODO

        Rendering von XMLs

        > TODO

        TODO: Dokumentieren, wie die XML-Verarbeitung allgemein geschieht

        TODO: Abgrenzung zu ZUGFeRD? Gibt da schon unterschiede im Core.

        TODO: Wie spielt dieses Feature mit Mail-Importen zusammen? Was gibt es zu beachten?

        TODO: Die Klassifizierung von XML ist aktuell nicht möglich. Da wird sogar eine Exception geworfen, falls der betroffene Code aufgerufen wird. Zum einen fraglich ob wir das mal verbessern, zum anderen sollte das vermutlich besser dokumentiert sein.

        Testcases:
        - XML ohne Dokumentenklasse hochladen
        - ZUGFeRD ohne Dokumentenklasse hochladen

        TODO: In der Extraktion werden mit executeXRechnungInvoiceSolution Invoice-Spezifische Dinge erledigt, Lieferant und Kreditor zu ermitteln.

        Das ist keine saubere Trennung von Core und Solution.