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.
25 lines
1.3 KiB
Java
25 lines
1.3 KiB
Java
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;
|
|
}
|
|
}
|