$_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"; ?>

Nachbestellungen

Zurück zum Dashboard Bestellungen

Artikel werden nach Produkt und Größe zusammengefasst. Aktionen bearbeiten die ältesten Bestellungen zuerst (FIFO).

Artikel manuell hinzufügen

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): ?>
"> "> _" name="quantity" min="1" max="" value="1" class="backorder-qty-input" >
-
0): ?>
"> "> _" name="quantity" min="1" max="" value="1" class="backorder-qty-input" >
-