$_SESSION['admin_username'] ?? "unknown", "product_id" => $_POST['product_id'] ?? 0, "size" => $_POST['size'] ?? "", "quantity" => $_POST['quantity'] ?? 0, ]); } } } if ($_SERVER['REQUEST_METHOD'] === "POST" && isset($_POST['mark_ordered'])) { if (!validateCsrfToken($_POST['csrf_token'] ?? "")) { $message = "Ungültiges Token. Bitte versuchen Sie es erneut."; $messageType = "error"; } else { $result = markBackorderItemsOrdered( $_POST['product_id'] ?? 0, $_POST['size'] ?? "", $_POST['quantity'] ?? 0, ); $message = $result["success"] ? ($result["updated"] ?? 0) . " Position(en) als bestellt markiert." : $result["message"]; $messageType = $result["success"] ? "success" : "error"; if ($result["success"]) { logAccess("Admin marked backorder items ordered", [ "admin" => $_SESSION['admin_username'] ?? "unknown", "product_id" => $_POST['product_id'] ?? 0, "size" => $_POST['size'] ?? "", "quantity" => $_POST['quantity'] ?? 0, ]); } } } if ($_SERVER['REQUEST_METHOD'] === "POST" && isset($_POST['mark_delivered'])) { if (!validateCsrfToken($_POST['csrf_token'] ?? "")) { $message = "Ungültiges Token. Bitte versuchen Sie es erneut."; $messageType = "error"; } else { $result = markBackorderItemsDelivered( $_POST['product_id'] ?? 0, $_POST['size'] ?? "", $_POST['quantity'] ?? 0, ); $message = $result["success"] ? ($result["updated"] ?? 0) . " Position(en) als geliefert markiert." : $result["message"]; $messageType = $result["success"] ? "success" : "error"; if ($result["success"]) { logAccess("Admin marked backorder items delivered", [ "admin" => $_SESSION['admin_username'] ?? "unknown", "product_id" => $_POST['product_id'] ?? 0, "size" => $_POST['size'] ?? "", "quantity" => $_POST['quantity'] ?? 0, ]); } } } $groups = getBackorderGroups(); $products = getProducts(); $productSizeMap = []; foreach ($products as $product) { $sizes = getProductSizes($product); if (empty($sizes)) { $sizes = ["Standard"]; } $productSizeMap[(int) $product["id"]] = $sizes; } $bodyClass = "admin-page"; include __DIR__ . "/../includes/header.php"; ?>
Artikel werden nach Produkt und Größe zusammengefasst. Aktionen bearbeiten die ältesten Bestellungen zuerst (FIFO).
Für Bedarf ohne zugehörige Kundenbestellung (z. B. Lagerauffüllung).
Keine Artikel im Katalog vorhanden.
Keine Nachbestellungen vorhanden.
| Artikel | Größe | Nachzubestellen | Wartet auf Lieferung | Als bestellt markieren | Lieferung eingetroffen |
|---|---|---|---|---|---|
| 0): ?> - | 0): ?> - |