Erweitere VoTiAn NG um Fachfunktionen und verbessere die Listenoberfläche

Ergänze Auftragsbearbeitung, Disposition, Stammdaten, Kunden- und
Transporteurportale, Lagerverwaltung, Abrechnung, Exporte und Statistik.
Füge Kontoeinstellungen, Mitteilungen, Automatikdienste und Betriebsstatus
sowie die zugehörigen Tests und PHP-Abgleichsdokumentation hinzu.

Vergrößere die persönlichen Auftragslisten auf einheitliche Höhen und
richte Statusanzeigen sowie die Ranking-Vorschau-Steuerelemente bündig aus.

Validierung: 44 Frontendtests und Produktionsbuild erfolgreich.
Backend funktional unverändert gegenüber dem vollständigen Lauf mit 1.624
erfolgreichen und drei übersprungenen Tests. Layout im Browser und lokale
Bereitstellung geprüft.
This commit is contained in:
Sven committed 2026-10-20 11:19:43 +02:00
1 parent 363bc27c26
commit 781a2b82dc
1165 files changed
+74986 -1028

No files matched your search

+23 -1
View File
@@ -8,13 +8,17 @@ Die Altanwendung wurde fachlich und technisch analysiert. Die neue Oberfläche b
**Die Auftragserfassung läuft jetzt nativ in React und Spring Boot:** Sofortauftrag, Vorbestellung, Dauerauftrag, Barzahlung, direkte Fahrzeugzuweisung und Nacherfassung. Dazu gehören Kostenstellensuche, mehrere Stationen, PLZ-/Gebietstarife oder Festpreise, Preisvorschau, Rechteprüfung und transaktionales Speichern im Bestand. Hinzu kommen Kostensplit, Kurier-Unteraufträge bei Nacherfassungen, Artikelpositionen mit optionalen Lagerbewegungen und eingebettete Kartenauswahl. Voraussetzung ist das bestehende Erfassungsrecht 7; Lagerbewegungen benötigen zusätzlich Recht 14, Unternehmerverrechnung Recht 38.
Kunden- und Transporteurstamm → Portal-Hauptzugang verwaltet Aktivierung, Anmeldename, Passwort, Sperre und 2FA-Rücksetzung der vorhandenen PHP-Portalzugänge. Kontakt- und Abrechnungsdaten bleiben bei einer Zugangssperre erhalten. Zusätzliche Kundenmitarbeiter, eigene Portalrechte und Kostenstellenfreigaben sind unter „Kundenmitarbeiter / Portalrechte“ pflegbar. Fehlt die PHP-Matrixtabelle, bleibt nur die Matrix gesperrt; zur expliziten Einrichtung liegt `backend/sql/portal-costcenter-matrix.sql` bereit.
Unter Verwaltung → Mitarbeiter → Lagerrechte sind Hauptlagerzugänge, Unterlagereinschränkungen, Lesemodus und das PHP-Artikelverwaltungsflag pflegbar. Lagerbuchungen prüfen diese Zugänge erneut; bestehende fremde Freigaben und geschützte Konten bleiben geschützt.
Adressvorschläge über Google Places ergänzen Kunden-, Kurier- und Kostenstellenadressen. In der Kundenliste lassen sich Kostenstellen einblenden, nach Namen filtern und direkt bearbeiten. Der Google-Schlüssel bleibt im Backend.
Der geprüfte Menüumfang und noch fehlende Funktionen stehen in [docs/MENUE-ABGLEICH.md](docs/MENUE-ABGLEICH.md). Freie Artikelpositionen, Alt-Tastenkürzel, Nachhaltigkeitsdaten und Erfassung in freigegebenen Niederlassungen sind ebenfalls implementiert.
**Neu aus dem Menüabgleich:** Unter Verwaltung sind Feiertage, CLASSIC-/BWV-Anfahrtszeiten, Gruppen mit Mitgliedschaften und das Impressum angebunden. Die Auswertung berechnet komplette Zeiträume direkt auf dem Bestand, mit Niederlassungen, Vergleichszeiträumen, Gruppierungen, KM/CO₂e und CSV. Der genaue Funktionsumfang und die noch offenen PHP-Funktionen stehen im Menüabgleich.
Die vollständige Ablösung der PHP-Anwendung ist weiterhin offen. Native Auftragsbearbeitung, Fahrzeugzuweisung, Abschluss, Storno/Gegenbuchung, Kunden-/Kurier-/Kostenstellen-/Fahrzeugpflege sowie Abrechnungsübersichten, Rechnungszuordnung, CSV und PDF-Leistungsübersichten sind ergänzt. Vollständige Rechnungserstellung, Buchhaltungsverarbeitung und vorhandene Hintergrunddienste sind weiterhin offen. Foto-Workflow-Sets mit Stationsvorgaben, automatische Kilometer-/PZM- und Fernverkehrskalkulation sowie Auslandsabholung sind angebunden. Die Routenfunktionen benötigen den bestehenden PZM-Dienst (`PZM_URL`) und einen Google-Schlüssel (`GOOGLE_MAPS_API_KEY`); der Fotodienst kommt aus dem Bestandsparameter `URL_CS_PHOTO_WORKFLOW`, die eingebettete Karte aus `URL_GEOCORDS`. Die automatische Adressauflösung gewählter Kartenpunkte verwendet ebenfalls den Google-Schlüssel. Umfang, Betriebsabhängigkeiten und Prüfnachweise stehen in [docs/AUFTRAGSERFASSUNG.md](docs/AUFTRAGSERFASSUNG.md).
Die vollständige Ablösung der PHP-Anwendung ist weiterhin offen. Native Auftragsbearbeitung, Fahrzeugzuweisung, Abschluss, Storno/Gegenbuchung, Kunden-/Kurier-/Kostenstellen-/Fahrzeugpflege sowie Abrechnungsübersichten, Rechnungszuordnung, CSV und PDF-Leistungsübersichten sind ergänzt. Rechnungserstellung, Buchhaltungsläufe und die sechs nativen Automatikdienste sind inzwischen implementiert. Die Betriebsumschaltung der Automatikdienste ist noch ausstehend; der Kategorie-9-Einnahmenexport benötigt weiterhin die Originaldefinition. Der aktuelle Stand und die Prüfgrenzen stehen in [docs/PRUEFSTATUS.md](docs/PRUEFSTATUS.md). Foto-Workflow-Sets mit Stationsvorgaben, automatische Kilometer-/PZM- und Fernverkehrskalkulation sowie Auslandsabholung sind angebunden. Die Routenfunktionen benötigen den bestehenden PZM-Dienst (`PZM_URL`) und einen Google-Schlüssel (`GOOGLE_MAPS_API_KEY`); der Fotodienst kommt aus dem Bestandsparameter `URL_CS_PHOTO_WORKFLOW`, die eingebettete Karte aus `URL_GEOCORDS`. Die automatische Adressauflösung gewählter Kartenpunkte verwendet ebenfalls den Google-Schlüssel. Umfang, Betriebsabhängigkeiten und Prüfnachweise stehen in [docs/AUFTRAGSERFASSUNG.md](docs/AUFTRAGSERFASSUNG.md).
Die vollständige Analyse und Abdeckungsmatrix stehen in [docs/ALTSYSTEM-ANALYSE.md](docs/ALTSYSTEM-ANALYSE.md).
@@ -137,3 +141,21 @@ docs/ Analyse, Fachregeln, Abdeckung und weitere Abnahme
scripts/ Lokaler Start mit vorhandener Konfiguration
tests/ Zusätzliche Konfigurations- und Browserprüfungen
```
### Zeitgesteuerte Angebotsrückrufe
`OFFER_REVOCATION_WORKER_ENABLED=false` hält den nativen Rückruf-/Sperrbereinigungsdienst im PHP-Parallelbetrieb aus. Zur Umschaltung zuerst die Rückruf- und Sperrbereinigungsblöcke in `include/autoranking_main.php` außer Betrieb nehmen, dann den Schalter setzen und NG neu starten. Der Angebotslauf kann separat mit dem nachfolgend beschriebenen nativen Dienst abgelöst werden. Die Fachparameter `AUTORANKING_REVOCATION_ENABLED`, `AUTORANKING_REVOKE_JOB_MODE` und die automatischen/manuellen Minuten-/Sekundenfristen stammen direkt aus der Dispositionsniederlassung. Keine globale Vererbung für diesen PHP-Pfad. Nur transaktionale Schreibziele werden verarbeitet; ungültige Zuordnungen und Fristen bleiben zur Klärung stehen. Die Fristanzeige unter Kurierauswahl → Vermittlung ändern liest diese Einstellungen auch bei ausgeschaltetem NG-Worker.
### Automatische Angebote
`AUTO_OFFER_WORKER_ENABLED=false` hält den nativen Angebotslauf aus. Die lesende Kandidatenvorschau ist bereits unter Kurierauswahl → Vermittlung ändern verfügbar. Vor Aktivierung zuerst den Angebotsblock von `include/autoranking_main.php` beenden; anschließend NG mit `AUTO_OFFER_WORKER_ENABLED=true` neu starten. Rückrufe und Freigabe überholter Kuriersemaphoren müssen weiterhin durch genau einen zuständigen Dienst verarbeitet werden (separater Schalter `OFFER_REVOCATION_WORKER_ENABLED`). Der bestehende Geräteabruf und Auditverbraucher bleiben erforderlich; der vorhandene `keepalive`-Eintrag `autoranking` wird vom aktivierten Angebotslauf fortgeschrieben.
Der Angebotslauf liest die Fachparameter der Dispositionsniederlassung: Aktivierung, Versuchslimit, Rundenanzahl, Vermittlungsmodus/-tiefe und Fahrzeugregeln. Kundenbezogene Favoriten-/Sperrschalter verwenden den jeweiligen PHP-Parameterfallback. Die Schreibziele `job`, `courier`, `autoranking` und `genericdatacontainer` benötigen InnoDB. Aufträge mit unvollständiger oder mehrdeutiger Konfiguration bleiben zur Klärung stehen. Ausführung ist alle 15 Sekunden nach Abschluss des vorherigen Durchlaufs, mit 40 Aufträgen pro Seite. Es erfolgt keine Schemaumstellung durch den Dienst.
### Betriebsstatus
Verwaltung → Betriebsstatus zeigt die sechs nativen Automatikdienste mit Aktivierung, Umfang, letztem abgeschlossenen Lauf und Fehler-/Ergebniszahlen. Die Laufwerte gelten für die gesamte NG-Instanz und beginnen nach einem Neustart neu. Ein Lauf ohne Abschluss seit mehr als drei Minuten wird als überfällig gekennzeichnet; daraus folgt nicht automatisch, dass der Prozess beendet ist. Gemeinsame `keepalive`-Zeitstempel können von PHP oder NG stammen und sind kein Nachweis der Zuständigkeit.
Auftrags-/Kurierkennzahlen und Geräte-Abschlussmeldungen sind auf die ursprüngliche Niederlassung begrenzt. Erforderlich ist das vorhandene Mitarbeiterverwaltungsrecht (Position 3). Die Ansicht liest ausschließlich; sie startet keine Dienste und versendet keine Nachrichten. Fehlende Datenquellen werden einzeln als nicht verfügbar angezeigt.