Posts by Tobias

    ich habe mir deinen Framework-Vorschlag mal kurz angeschaut. Grundsätzlich finde ich die Anpassungen echt top – moderner Techstack mit NestJS, Next.js, Prisma und Co. sieht sehr solide aus und adressiert viele der aktuellen Pain Points.

    Was mir sofort aufgefallen ist: Die Node.js-Versionen (seit 2023/2024) und die Postgres-Version (ebenfalls seit 2023) sind End-of-Life. Das sollten wir definitiv auf die neuesten LTS-Versionen updaten, um Security und Support zu gewährleisten.

    Besonders positiv: Die Möglichkeit für individuelle Anpassungen ohne ständige Upstream-Konflikte. Persönlich sind mir Updates aus dem Upstream (egal ob Frontend, Funktionalität oder DB) immer die Hölle wegen der lokalen Mods – eine saubere Trennung davon wäre super hilfreich und würde viel Frust sparen.

    OpenXE Docker – Neues Setup verfügbar

    Problem

    Der aktuelle Docker-Build im OpenXE-Repo funktioniert nicht mehr, und es fehlt eine einfache Möglichkeit, Forks oder Branches in einer sauberen Umgebung zu testen.

    Lösung

    Ich habe ein neues Docker-Setup entwickelt, das jetzt als Pull Request #226 vorliegt: https://github.com/OpenXE-org/OpenXE/pull/226

    Hauptfeatures

    Multi-Repository Support

    • Teste beliebige Forks und Branches per Umgebungsvariable
    • Lokale Entwicklung mit gemounteten Code
    • Beispiel: export REPO_URL=https://github.com/user/OpenXE.git && export BRANCH=feature-xyz

    Automatisches Upgrade-System

    • Nutzt OpenXEs eigenes upgrade.php für DB-Initialisierung
    • Automatische Updates bei jedem Container-Start

    Komfort

    • Optional: Beispieldaten-Import
    • Konfigurierbares Admin-Passwort
    • Persistente Daten (userdata + DB)

    Schnellstart


    Code
    # Lokale Entwicklung
    docker-compose up -d
    
    # Fork testen
    export REPO_URL=https://github.com/Avatarsia/OpenXE.git
    export BRANCH=api-doc-2
    docker-compose up -d --build

    Bisherige Ansätze

    Es gibt bereits mehrere Docker-Lösungen:

    • Repo docker-compose.yml – funktioniert nicht mehr
    • tsgoff/docker-openxe – nächtliche Builds, externes Repo
    • getthemax/OpenXE-docker – lokaler Build, externes Repo
    • cherrymint – Alpine-basiert, kein vollständiger Stack

    Motivation

    Konkreter Auslöser war die API-Dokumentation (PR von Avatarsia) – ich wollte den Branch schnell in einer frischen Umgebung testen. Dabei ist mir aufgefallen, dass das aktuelle Docker-Setup kaputt ist und es keinen einheitlichen Workflow gibt.

    Ausblick

    Langfristig wäre ein Base-Image mit regelmäßigen Builds (GitHub Actions) sinnvoll um lokale Redundanzen zu sparen. Dieser PR ist ein erster Schritt zur Vereinheitlichung.

    Feedback erwünscht

    Schaut euch den PR an und gebt gerne Feedback! Ziel ist es, einen wartbaren, flexiblen Docker-Workflow für alle zu schaffen – sowohl für Entwicklung als auch Testing und falls möglich im produktiven Einsatz.

    Pull Request: https://github.com/OpenXE-org/OpenXE/pull/226

    Hi Alex,

    bei cbc:id ist vermutlich die USt-Id des Rechnungsempfängers gemeint, oder?
    Kann man die Felder wie z.B. Absender und Empfänger E-Mail Adresse und USt-Id nicht mit einer Variable aus den Stammdaten füllen?

    z.B.: $rechnung.kopf.ustid

    Code
    <cbc:EndpointID schemeID="EM">info@musterfirma.de</cbc:EndpointID> <!-- HIER MANUELL MAILADRESSE EINTRAGEN -->
    <cbc:Telephone>0123567890</cbc:Telephone> <!-- HIER MANUELL TELEFONNUMMER EINTRAGEN -->
    <cbc:ElectronicMail>info@musterfirma.de</cbc:ElectronicMail> <!-- HIER MANUELL MAILADRESSE EINTRAGEN -->
    <cbc:ID>DE12345678</cbc:ID> <!-- HIER MANUELL IBAN EINTRAGEN -->


    Aktiviert man xml-rechnung verschwindet rechts oben das PDF Symbol und der Vorschau Reiter für die PDF. Ist das ein Bug oder ein Feature? :)

    Danke für den Hint mit dem dms! :)

    Das alte System hatte im DMS den Ordner k194**3_xentral_firmenname

    Die neue Installation legt im DMS den Ordner openxe_system_firmenname an.

    Ich habe einen Symlink von openxe_system_firmenname auf den alten Ordner erstellt.

    Damit kann ich PDF Dateien wieder herunterladen.

    Normale Dateien die vom Xentral bzw. Xentral generiert wurden kann man normal herunterladen.

    Uploads z.B. PDFs die in ein Angebot hochgeladen wurden kann man nicht mehr herunterladen. Die werden schon in userdata abgelegt, oder?

    Ich habe das userdata aus der Xentral Instanz übernommen und das Ghostscript aus PDF Bearbeitung für die Kompatibilität aus dem Import von Xentral 24.xx ausgeführt.

    Die File Permissions im Userdata passen und gehören dem richtigen User.

    Jedoch wenn ich z.B. ein PDF herunterladen will bekomme ich die Datei mit 0 Byte.


    Im Apache Log sehe ich für den Download den Statuscode 200

    [31/Dec/2024:14:25:26 +0100] "GET /index.php?module=dateien&action=send&id=1122 HTTP/1.1" 200 434 "https://********.*********.de/index.php?module=angebot&action=dateien&id=490" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36"

    Wie kann ich den Fehler weiter debuggen?

    Bei dem Versuch Xentral auf OpenXE umzuziehen bekomme bei dem Upgrade mit ./upgrade.sh -db -v -do -drop_keys die Meldung, dass die Tabelle belegegesamt bereits existiert. Das Upgrade Script versucht einen View mit dem gleichen Namen zu erstellen. Hattet ihr das Problem schon mal?


    Upgrade step 2306 of 2309...

    CREATE VIEW `belegegesamt` AS select `rechnung`


    PHP Fatal error: Uncaught mysqli_sql_exception: Table 'belegegesamt' already exists in /var/www/openxe/upgrade/data/upgrade.php:478

    Aktuell läuft das Update über das Update Script

    Code
     ./upgrade.sh -do -v


    Lokale Anpassungen oder Erweiterungen würden mit dem Vorgehen überschrieben werden.


    --------------- OpenXE upgrade ---------------

    --------------- 2024-02-07 14:40:13 ---------------

    There are modified files:

    ../www/pages/verkaufszahlen.php

    ../www/themes/new/css/color3.css

    ../www/themes/new/css/styles.css

    ../www/themes/new/images/favicon/favicon-16x16.png

    ../www/themes/new/images/favicon/favicon-32x32.png


    Gibt es eine Best Bractice um wie man mit lokalen Änderungen im Filesystem und der Datenbank umgeht?


    Mögliches Vorgehen wäre ein eigener git branch mit OpenXE als Upstream repo den man dann jeweils merged und zusammen auf dem Zielserver deployed.


    Ist die Implementierung eines Modulsystems geplant, um OpenXE um zusätzliche Module erweitern zu können, ohne die Kernkomponenten zu beeinträchtigen?

    Bei Xentral Opensource V 20.1 gab es noch die Funktion Belegevorlagen. Damit konnten in Angeboten, Aufträgen, Rechnungen, etc. Vorlagen gespeichert und geladen werden und z.B. eine einheitliche Angebotsstruktur vorzugeben. Die Funktion ist in den späteren Xentral Opensource Versionen nicht mehr vorhanden und daher auch in OpenXE nicht. Sollte aber ohne größeren Aufwand wieder implementiert werden können.

    Ich erstelle per cron einen nächtlichen mysqldump und zeitgleich einen Snapshot der Dateien (komplette Installation mit Anpassungen und Userdata) an einem anderen Standort.

    Der lokale Mirror wird dann mit BorgBackup mit einer Retention von 90 Tagen für die monatlichen Backups und 7 täglichen gesichert.

    Ich glaube in dem aktuellen upgrade Script ist ein Syntax Error.

    Sieht so aus als würde die Klammer nicht geschlossen werden in den Cases


    Wir könnten für so Kleinigkeiten mal einen Slack Space einrichten :)


    Code
    syntax error, unexpected token ";", expecting ")"
    /var/www/*********/www/pages/upgrade.php:60


    Aktuell sind es für den Installer lediglich 15 Spalten die es betrifft.

    Das größte davon ist "Customer Supplied". Da wäre vchar doch kein Problem, oder?

    Damit funktioniert die Installation soweit. Für den Live Betrieb aber nicht optimal.


    Unter Controlling-> Verkaufszahlen bekomme ich noch folgenden Fehler. Kannst du dir da einen Reim darauf machen?

    Code
    count(): Argument #1 ($value) must be of type Countable|array, null given
    /var/www/vhosts/**********/httpdocs/www/pages/verkaufszahlen.php:638