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

@@ -0,0 +1,24 @@
package de.stadtbote.votian;
import java.time.*;
import java.time.format.DateTimeFormatter;
import java.util.Map;
import static de.stadtbote.votian.LegacyMapping.*;
import static de.stadtbote.votian.OrderEntryCatalog.invalid;
/** jobs2 stores the selected acceptance clock time on the current Berlin date. */
final class CustomerEntryAcceptance {
static LocalDateTime resolve(String time, boolean enabled, Clock clock) {
if(time==null || time.isBlank())return null;
if(!enabled)throw invalid("Die Annahmezeit ist für diese Niederlassung nicht freigegeben.");
if(!time.matches("(?:[01][0-9]|2[0-3]):[0-5][0-9]"))throw invalid("Bitte die Annahmezeit im Format HH:mm angeben.");
return LocalDate.now(clock.withZone(ZoneId.of("Europe/Berlin"))).atTime(LocalTime.parse(time));
}
static OrderEntryModels.Quote quote(OrderEntryModels.Request request,OrderEntryModels.Quote quote) {
return request.acceptUntil()==null?quote:quote.withMediationDeadline(quote.mediationDeadline(),LegacyOrderPricing.hash(quote.fingerprint()+"|customer-acceptance|"+request.acceptUntil()));
}
static String load(Map<String,Object> job,boolean enabled) {
var at=dateTime(job,"jb_waittime");
return enabled&&at!=null?at.format(DateTimeFormatter.ofPattern("HH:mm")):null;
}
}