|
@@ -17,16 +17,29 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['notify_available']))
|
|
|
$message = $result['success'] ? 'Kunde wurde informiert, dass die Vorbestellung zur Abholung bereit ist.' : $result['message'];
|
|
$message = $result['success'] ? 'Kunde wurde informiert, dass die Vorbestellung zur Abholung bereit ist.' : $result['message'];
|
|
|
$messageType = $result['success'] ? 'success' : 'error';
|
|
$messageType = $result['success'] ? 'success' : 'error';
|
|
|
}
|
|
}
|
|
|
|
|
+if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['mark_hidden'])) {
|
|
|
|
|
+ $reservationId = sanitize($_POST['reservation_id']);
|
|
|
|
|
+ $result = markReservationHidden($reservationId);
|
|
|
|
|
+ $message = $result['success'] ? 'Vorbestellung als Spam/Gelöscht markiert und ausgeblendet.' : $result['message'];
|
|
|
|
|
+ $messageType = $result['success'] ? 'success' : 'error';
|
|
|
|
|
+}
|
|
|
|
|
|
|
|
$reservations = getReservations();
|
|
$reservations = getReservations();
|
|
|
$filter = isset($_GET['filter']) ? sanitize($_GET['filter']) : 'pending';
|
|
$filter = isset($_GET['filter']) ? sanitize($_GET['filter']) : 'pending';
|
|
|
$searchOrderNumber = isset($_GET['order_number']) ? sanitize($_GET['order_number']) : '';
|
|
$searchOrderNumber = isset($_GET['order_number']) ? sanitize($_GET['order_number']) : '';
|
|
|
|
|
+$showAll = $filter === 'all';
|
|
|
|
|
|
|
|
// Filter backorders
|
|
// Filter backorders
|
|
|
$reservations = array_filter($reservations, function($r) {
|
|
$reservations = array_filter($reservations, function($r) {
|
|
|
return isset($r['type']) && $r['type'] === 'backorder';
|
|
return isset($r['type']) && $r['type'] === 'backorder';
|
|
|
});
|
|
});
|
|
|
|
|
|
|
|
|
|
+if (!$showAll) {
|
|
|
|
|
+ $reservations = array_filter($reservations, function($r) {
|
|
|
|
|
+ return !isReservationHidden($r);
|
|
|
|
|
+ });
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
if ($searchOrderNumber) {
|
|
if ($searchOrderNumber) {
|
|
|
$reservations = array_filter($reservations, function($r) use ($searchOrderNumber) {
|
|
$reservations = array_filter($reservations, function($r) use ($searchOrderNumber) {
|
|
|
return stripos($r['id'], $searchOrderNumber) !== false;
|
|
return stripos($r['id'], $searchOrderNumber) !== false;
|
|
@@ -45,6 +58,10 @@ $reservations = array_reverse($reservations); // Newest first
|
|
|
|
|
|
|
|
$canNotifyMap = [];
|
|
$canNotifyMap = [];
|
|
|
foreach ($reservations as $reservation) {
|
|
foreach ($reservations as $reservation) {
|
|
|
|
|
+ if (isReservationHidden($reservation)) {
|
|
|
|
|
+ $canNotifyMap[$reservation['id']] = false;
|
|
|
|
|
+ continue;
|
|
|
|
|
+ }
|
|
|
$isNotified = isset($reservation['backorder_status']) && $reservation['backorder_status'] === 'notified';
|
|
$isNotified = isset($reservation['backorder_status']) && $reservation['backorder_status'] === 'notified';
|
|
|
$canNotifyMap[$reservation['id']] = !$isNotified && canFulfillReservationItems($reservation['items']);
|
|
$canNotifyMap[$reservation['id']] = !$isNotified && canFulfillReservationItems($reservation['items']);
|
|
|
}
|
|
}
|
|
@@ -186,7 +203,9 @@ include __DIR__ . '/../includes/header.php';
|
|
|
<td data-label="Erstellt"><?php echo formatDate($reservation['created']); ?></td>
|
|
<td data-label="Erstellt"><?php echo formatDate($reservation['created']); ?></td>
|
|
|
<td data-label="Status">
|
|
<td data-label="Status">
|
|
|
<?php
|
|
<?php
|
|
|
- if (isset($reservation['backorder_status']) && $reservation['backorder_status'] === 'notified') {
|
|
|
|
|
|
|
+ if (isReservationHidden($reservation)) {
|
|
|
|
|
+ echo '<span class="status status-hidden">Spam/Gelöscht</span>';
|
|
|
|
|
+ } elseif (isset($reservation['backorder_status']) && $reservation['backorder_status'] === 'notified') {
|
|
|
echo '<span class="status status-notified">Informiert</span>';
|
|
echo '<span class="status status-notified">Informiert</span>';
|
|
|
} else {
|
|
} else {
|
|
|
echo '<span class="status status-open">Offen</span>';
|
|
echo '<span class="status status-open">Offen</span>';
|
|
@@ -194,12 +213,18 @@ include __DIR__ . '/../includes/header.php';
|
|
|
?>
|
|
?>
|
|
|
</td>
|
|
</td>
|
|
|
<td data-label="Aktionen">
|
|
<td data-label="Aktionen">
|
|
|
- <?php if ((!isset($reservation['backorder_status']) || $reservation['backorder_status'] !== 'notified') && canFulfillReservationItems($reservation['items'])): ?>
|
|
|
|
|
|
|
+ <?php if (!isReservationHidden($reservation) && (!isset($reservation['backorder_status']) || $reservation['backorder_status'] !== 'notified') && canFulfillReservationItems($reservation['items'])): ?>
|
|
|
<form method="POST" style="display: inline;" onsubmit="return confirm('Kunden informieren, dass die Vorbestellung zur Abholung bereit ist?');">
|
|
<form method="POST" style="display: inline;" onsubmit="return confirm('Kunden informieren, dass die Vorbestellung zur Abholung bereit ist?');">
|
|
|
<input type="hidden" name="reservation_id" value="<?php echo htmlspecialchars($reservation['id']); ?>">
|
|
<input type="hidden" name="reservation_id" value="<?php echo htmlspecialchars($reservation['id']); ?>">
|
|
|
<button type="submit" name="notify_available" class="btn btn-small">Abholung bereit</button>
|
|
<button type="submit" name="notify_available" class="btn btn-small">Abholung bereit</button>
|
|
|
</form>
|
|
</form>
|
|
|
<?php endif; ?>
|
|
<?php endif; ?>
|
|
|
|
|
+ <?php if (!isReservationHidden($reservation)): ?>
|
|
|
|
|
+ <form method="POST" style="display: inline;" onsubmit="return confirm('Vorbestellung als Spam/Gelöscht markieren? Die Vorbestellung wird überall ausgeblendet.');">
|
|
|
|
|
+ <input type="hidden" name="reservation_id" value="<?php echo htmlspecialchars($reservation['id']); ?>">
|
|
|
|
|
+ <button type="submit" name="mark_hidden" class="btn btn-secondary btn-small">Spam/Gelöscht</button>
|
|
|
|
|
+ </form>
|
|
|
|
|
+ <?php endif; ?>
|
|
|
<button onclick="showDetails('<?php echo htmlspecialchars($reservation['id']); ?>')" class="btn btn-secondary btn-small">Details</button>
|
|
<button onclick="showDetails('<?php echo htmlspecialchars($reservation['id']); ?>')" class="btn btn-secondary btn-small">Details</button>
|
|
|
</td>
|
|
</td>
|
|
|
</tr>
|
|
</tr>
|
|
@@ -242,8 +267,9 @@ function showDetails(reservationId) {
|
|
|
});
|
|
});
|
|
|
itemsHtml += '</ul>';
|
|
itemsHtml += '</ul>';
|
|
|
|
|
|
|
|
- const statusText = reservation.backorder_status === 'notified' ? 'Informiert' : 'Offen';
|
|
|
|
|
- const statusClass = reservation.backorder_status === 'notified' ? 'status-notified' : 'status-open';
|
|
|
|
|
|
|
+ const isHidden = reservation.is_hidden === true;
|
|
|
|
|
+ const statusText = isHidden ? 'Spam/Gelöscht' : (reservation.backorder_status === 'notified' ? 'Informiert' : 'Offen');
|
|
|
|
|
+ const statusClass = isHidden ? 'status-hidden' : (reservation.backorder_status === 'notified' ? 'status-notified' : 'status-open');
|
|
|
const html = `
|
|
const html = `
|
|
|
<h2>Vorbestellungsdetails</h2>
|
|
<h2>Vorbestellungsdetails</h2>
|
|
|
<p><strong>Bestellnummer:</strong> <strong class="order-highlight">${reservation.id}</strong></p>
|
|
<p><strong>Bestellnummer:</strong> <strong class="order-highlight">${reservation.id}</strong></p>
|