File manager - Edit - /home/webapp69.cm.in.th/u69319090024/Shop24/admin_orders.php
Back
<?php require_once __DIR__ . '/header.php'; // บังคับสิทธิ์ Admin เท่านั้น if (!is_admin()) { header('Location: index.php'); exit; } $message = ''; $message_type = ''; // ------------------------------------------------------------ // จัดการอัปเดตสถานะคำสั่งซื้อและข้อมูลการจัดส่ง // ------------------------------------------------------------ if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['action']) && $_POST['action'] === 'update_shipping') { $order_id = filter_input(INPUT_POST, 'order_id', FILTER_VALIDATE_INT); $status = $_POST['status'] ?? 'pending'; $carrier = trim($_POST['carrier'] ?? ''); $tracking_number = trim($_POST['tracking_number'] ?? ''); $shipping_date = !empty($_POST['shipping_date']) ? $_POST['shipping_date'] : date('Y-m-d H:i:s'); $estimated_delivery = !empty($_POST['estimated_delivery']) ? $_POST['estimated_delivery'] : null; if ($order_id) { $stmt = $pdo->prepare(" UPDATE orders SET status = ?, carrier = ?, tracking_number = ?, shipping_date = ?, estimated_delivery = ? WHERE id = ? "); $stmt->execute([$status, $carrier, $tracking_number, $shipping_date, $estimated_delivery, $order_id]); $message = "อัปเดตสถานะและข้อมูลการจัดส่งคำสั่งซื้อ <strong>#ORDER-" . str_pad($order_id, 5, '0', STR_PAD_LEFT) . "</strong> สำเร็จ!"; $message_type = "success"; } } // ------------------------------------------------------------ // ตัวกรองสถานะคำสั่งซื้อ // ------------------------------------------------------------ $status_filter = $_GET['status'] ?? ''; $where_sql = ''; $params = []; if (in_array($status_filter, ['pending', 'shipping', 'delivered', 'cancelled'])) { $where_sql = 'WHERE o.status = ?'; $params[] = $status_filter; } $stmt = $pdo->prepare(" SELECT o.*, u.fullname, u.email FROM orders o JOIN users u ON o.user_id = u.id {$where_sql} ORDER BY o.id DESC "); $stmt->execute($params); $orders = $stmt->fetchAll(); ?> <div class="d-flex justify-content-between align-items-center mb-4 flex-wrap gap-2"> <div> <h3 class="fw-bold mb-1"><i class="fa-solid fa-truck-ramp-box text-primary me-2"></i>จัดการคำสั่งซื้อและการจัดส่ง</h3> <p class="text-muted small mb-0">ระบุเลขพัสดุ วันจัดส่ง และวันที่คาดว่าสินค้าจะถึงผู้รับ</p> </div> <!-- Filter Buttons --> <div class="btn-group rounded-pill shadow-sm p-1 bg-white border"> <a href="admin_orders.php" class="btn btn-sm rounded-pill <?= empty($status_filter) ? 'btn-primary' : 'btn-light' ?>">ทั้งหมด</a> <a href="admin_orders.php?status=pending" class="btn btn-sm rounded-pill <?= $status_filter === 'pending' ? 'btn-warning text-dark' : 'btn-light' ?>">รอส่ง</a> <a href="admin_orders.php?status=shipping" class="btn btn-sm rounded-pill <?= $status_filter === 'shipping' ? 'btn-info text-white' : 'btn-light' ?>">กำลังส่ง</a> <a href="admin_orders.php?status=delivered" class="btn btn-sm rounded-pill <?= $status_filter === 'delivered' ? 'btn-success' : 'btn-light' ?>">สำเร็จ</a> </div> </div> <?php if (!empty($message)): ?> <div class="alert alert-<?= $message_type ?> alert-dismissible fade show rounded-3 mb-4" role="alert"> <i class="fa-solid fa-circle-check me-2"></i> <?= $message ?> <button type="button" class="btn-close" data-bs-dismiss="alert"></button> </div> <?php endif; ?> <div class="card border-0 shadow-sm rounded-4 overflow-hidden"> <div class="card-body p-0"> <div class="table-responsive"> <table class="table align-middle table-hover mb-0"> <thead class="table-light"> <tr> <th class="ps-4">Order ID / วันที่</th> <th>ผู้ซื้อ</th> <th>ยอดรวม</th> <th>สถานะ</th> <th>บริษัทขนส่ง / เลขพัสดุ</th> <th>วันจัดส่ง / คาดว่าถึง</th> <th class="text-center pe-4">การจัดการ</th> </tr> </thead> <tbody> <?php if (empty($orders)): ?> <tr><td colspan="7" class="text-center py-4 text-muted">ไม่พบรายการคำสั่งซื้อ</td></tr> <?php else: ?> <?php foreach ($orders as $ord): ?> <tr> <td class="ps-4"> <span class="fw-bold text-primary d-block">#ORDER-<?= str_pad($ord['id'], 5, '0', STR_PAD_LEFT) ?></span> <small class="text-muted"><?= date('d/m/Y H:i', strtotime($ord['created_at'])) ?></small> </td> <td> <span class="fw-semibold text-dark d-block"><?= htmlspecialchars($ord['fullname']) ?></span> <small class="text-muted"><?= htmlspecialchars($ord['email']) ?></small> </td> <td class="fw-bold text-primary"><?= format_price($ord['total_price']) ?></td> <td><?= render_order_status_badge($ord['status']) ?></td> <td> <?php if ($ord['tracking_number']): ?> <span class="badge bg-light text-dark border d-block text-start mb-1"> <i class="fa-solid fa-truck text-muted me-1"></i> <?= htmlspecialchars($ord['carrier'] ?? 'ไม่ระบุ') ?> </span> <code class="fw-bold text-dark"><?= htmlspecialchars($ord['tracking_number']) ?></code> <?php else: ?> <span class="text-muted small">- ยังไม่ระบุ -</span> <?php endif; ?> </td> <td> <?php if ($ord['shipping_date']): ?> <small class="d-block text-muted">ส่ง: <?= date('d/m/Y', strtotime($ord['shipping_date'])) ?></small> <?php endif; ?> <?php if ($ord['estimated_delivery']): ?> <small class="d-block text-success fw-semibold"><i class="fa-solid fa-calendar-check me-1"></i>ถึง: <?= date('d/m/Y', strtotime($ord['estimated_delivery'])) ?></small> <?php else: ?> <small class="text-muted">-</small> <?php endif; ?> </td> <td class="text-center pe-4"> <div class="d-flex gap-1 justify-content-center"> <!-- ปุ่มแก้ไขสถานะการส่ง --> <button class="btn btn-sm btn-outline-primary rounded-pill px-3" data-bs-toggle="modal" data-bs-target="#shipModal<?= $ord['id'] ?>"> <i class="fa-solid fa-truck-fast me-1"></i> อัปเดตจัดส่ง </button> <!-- ปุ่มเปิดแชทกับผู้ซื้อ --> <a href="chat.php?order_id=<?= $ord['id'] ?>&user_id=<?= $ord['user_id'] ?>" class="btn btn-sm btn-outline-success rounded-circle" style="width: 32px; height: 32px;" title="แชทกับผู้ซื้อ"> <i class="fa-solid fa-comments"></i> </a> </div> </td> </tr> <!-- Modal สำหรับอัปเดตการจัดส่ง Order <?= $ord['id'] ?> --> <div class="modal fade" id="shipModal<?= $ord['id'] ?>" tabindex="-1"> <div class="modal-dialog modal-dialog-centered"> <div class="modal-content rounded-4 border-0"> <form method="POST" action="admin_orders.php"> <input type="hidden" name="action" value="update_shipping"> <input type="hidden" name="order_id" value="<?= $ord['id'] ?>"> <div class="modal-header bg-primary text-white rounded-top-4"> <h5 class="modal-title fw-bold"> <i class="fa-solid fa-box-open me-2"></i>อัปเดตการจัดส่ง #ORDER-<?= str_pad($ord['id'], 5, '0', STR_PAD_LEFT) ?> </h5> <button type="button" class="btn-close btn-close-white" data-bs-dismiss="modal"></button> </div> <div class="modal-body p-4"> <!-- สถานะ --> <div class="mb-3"> <label class="form-label fw-medium">สถานะคำสั่งซื้อ</label> <select name="status" class="form-select" required> <option value="pending" <?= $ord['status'] === 'pending' ? 'selected' : '' ?>>⏳ รอจัดส่ง (Pending)</option> <option value="shipping" <?= $ord['status'] === 'shipping' ? 'selected' : '' ?>>🚚 กำลังจัดส่ง (Shipping)</option> <option value="delivered" <?= $ord['status'] === 'delivered' ? 'selected' : '' ?>>✅ จัดส่งสำเร็จ (Delivered)</option> <option value="cancelled" <?= $ord['status'] === 'cancelled' ? 'selected' : '' ?>>❌ ยกเลิกคำสั่งซื้อ (Cancelled)</option> </select> </div> <!-- บริษัทขนส่ง --> <div class="mb-3"> <label class="form-label fw-medium">บริษัทขนส่ง (Carrier)</label> <input type="text" name="carrier" class="form-control" placeholder="เช่น Flash Express, ไปรษณีย์ไทย, Kerry" value="<?= htmlspecialchars($ord['carrier'] ?? 'Flash Express') ?>"> </div> <!-- หมายเลขพัสดุ --> <div class="mb-3"> <label class="form-label fw-medium">เลขพัสดุติดตาม (Tracking Number)</label> <input type="text" name="tracking_number" class="form-control" placeholder="เช่น TH1234567890" value="<?= htmlspecialchars($ord['tracking_number'] ?? '') ?>"> </div> <div class="row g-2"> <!-- วันที่จัดส่ง --> <div class="col-6 mb-3"> <label class="form-label fw-medium">วันที่จัดส่ง</label> <input type="datetime-local" name="shipping_date" class="form-control" value="<?= $ord['shipping_date'] ? date('Y-m-d\TH:i', strtotime($ord['shipping_date'])) : date('Y-m-d\TH:i') ?>"> </div> <!-- วันที่คาดว่าสินค้าจะถึงผู้รับ --> <div class="col-6 mb-3"> <label class="form-label fw-medium">วันที่คาดว่าจะถึงผู้รับ</label> <input type="date" name="estimated_delivery" class="form-control" value="<?= $ord['estimated_delivery'] ? $ord['estimated_delivery'] : date('Y-m-d', strtotime('+2 days')) ?>"> </div> </div> </div> <div class="modal-footer"> <button type="button" class="btn btn-light rounded-pill px-3" data-bs-dismiss="modal">ยกเลิก</button> <button type="submit" class="btn btn-primary-custom rounded-pill px-4">บันทึกข้อมูลจัดส่ง</button> </div> </form> </div> </div> </div> <?php endforeach; ?> <?php endif; ?> </tbody> </table> </div> </div> </div> <?php require_once __DIR__ . '/footer.php'; ?>
| ver. 1.4 |
Github
|
.
| PHP 7.4.33 | Generation time: 0.23 |
proxy
|
phpinfo
|
Settings