Das System bildet keinen klassischen E-Commerce-Checkout ab, sondern einen internen PSA-Anforderungsprozess mit direkter interner Weiterleitung nach dem Absenden.
index.php -> product.php -> cart.php -> checkout.phpdata/orders.jsonincludes/functions.phpadmin/orders.phpadmin/backorders.phpadmin/nametags.phpadmin/settings.phpHinweis:
config.php liefert Startwerte, wirksam im Betrieb sind die normalisierten Einstellungen aus data/settings.json (über getSystemSettings()).product.php in den Warenkorb gelegt (optional mit Größe).cart.php) enthält pro Produkt nur einen Eintrag; erneutes Hinzufügen aktualisiert ggf. die Größe statt eine Menge zu erhöhen.checkout.php) erfasst:
createOrder(...) erzeugt eine Bestellnummer (ORDER_PREFIX-JAHR-LFDNR, z. B. FWFS-2026-001) und speichert die Bestellung.order-success.php weitergeleitet.Eine Bestellung ist nur möglich, wenn die gewählte Organisation existiert und als aktiv markiert ist. Inaktive/ungültige Organisationen blockieren den Abschluss.
Es gibt keinen separaten Admin-Freigabeschritt vor dem Eingang einer Bestellung.
In admin/orders.php werden Bestellungen nach Status geführt und manuell bearbeitet:
open: keine Position bearbeitetpartial: mindestens eine Position bearbeitetprocessed: alle Positionen bearbeitetcancelled: Bestellung storniertRegeln:
admin_notified_at) wird gesetzt, wenn die Admin-Benachrichtigungsmail erfolgreich versendet wurde.Wenn Artikel nicht auf Lager sind, können Admins Positionen als Nachbestellung markieren. Der Vorgang ist nur im Admin-Bereich sichtbar, nicht im Frontend.
Jede Bestellposition kann optional folgende Felder haben:
backorder_status: "" (keine), to_be_backordered, orderedbackordered_at, ordered_at (Zeitstempel)to_be_backordered): Position ist als Nachbestellung markiert, externe Bestellung steht noch aus.ordered): Extern bestellt, Lieferung ausstehend.| Aktion | Ort | Wirkung |
|---|---|---|
| Als Nachbestellung markieren | admin/orders.php (pro Position) |
Setzt to_be_backordered |
| Nachbestellung aufheben | admin/orders.php |
Setzt backorder_status zurück auf "" (nur aus Zustand 1) |
| Als bestellt markieren | admin/backorders.php, admin/nametags.php |
Verschiebt N Positionen von to_be_backordered nach ordered (FIFO) |
| Lieferung eingetroffen | admin/backorders.php, admin/nametags.php |
Setzt N Positionen von ordered zurück auf "" (FIFO); Position bleibt offen zur normalen Abarbeitung |
| Als bearbeitet markieren | admin/order.php, admin/nametags.php |
Setzt is_processed und löscht backorder_status, backordered_at, ordered_at |
In admin/backorders.php werden Positionen nach Produkt und Größe gruppiert. Die Spalten Nachzubestellen und Wartet auf Lieferung werden getrennt gezählt, damit neu markierte Artikel nicht mit bereits bestellten vermischt werden.
Positionen mit Nachbestell-Status (Nachzubestellen oder Wartet auf Lieferung) erscheinen nicht in Offene Positionen auf dem Dashboard; sie werden über Nachbestellungen verwaltet.
Bereits bearbeitete Positionen (is_processed) erscheinen nicht in admin/backorders.php — beim Bearbeiten wird der Nachbestell-Status gelöscht (siehe ADMIN_BUSINESS_LOGIC.md).
admin/nametags.php)Namensschilder haben kein eigenes Datenmodell (seit v1.3.13; data/nametags.json und NAMETAGS_FILE entfallen). Es sind normale Bestellpositionen, deren product_name exakt dem Einstellungswert nametag_product_name entspricht; die Seite ist eine reine Sammelübersicht über denselben backorder_status.
Beabsichtigt und nicht zu „korrigieren": die Überschneidung mit admin/backorders.php, die Zuordnung über den Produktnamen statt product_id, und dass „Lieferung eingetroffen" die Position zurück in die Liste Ausstehende Bestellungen stellt (abschließender Schritt ist „Als bearbeitet markieren"). Details: ADMIN_BUSINESS_LOGIC.md.