File manager - Edit - /home/webapp69.cm.in.th/u69319090037/Shop/views/order_detail.php
Back
<?php /** * Order Detail & Slip Upload Page * CMTC Shopping */ require_once __DIR__ . '/../includes/header.php'; require_once __DIR__ . '/../includes/navbar.php'; require_login(); $order_id = intval($_GET['id'] ?? 0); $user_id = $_SESSION['user_id']; $is_admin = has_permission($db, 'manage_orders'); // Fetch order $stmt = $db->prepare(" SELECT o.*, u.username, u.firstname, u.lastname, u.phone, u.email, p.id as payment_id, p.slip_path, p.payment_method, p.amount as paid_amount, p.status as payment_status FROM orders o JOIN users u ON o.user_id = u.id LEFT JOIN payments p ON o.id = p.order_id WHERE o.id = ? " . ($is_admin ? "" : "AND o.user_id = ?") . " LIMIT 1 "); if ($is_admin) { $stmt->execute([$order_id]); } else { $stmt->execute([$order_id, $user_id]); } $order = $stmt->fetch(); if (!$order) { echo "<div class='container my-5 text-center'><h3>ไม่พบข้อมูลคำสั่งซื้อ</h3><a href='" . base_url('views/orders.php') . "' class='btn btn-primary mt-2'>กลับหน้ารายการ</a></div>"; require_once __DIR__ . '/../includes/footer.php'; exit(); } $error = ""; $success = ""; // Upload Slip if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['upload_slip'])) { if (!validate_csrf_token($_POST['csrf_token'] ?? '')) { $error = "โทเค็นความปลอดภัยไม่ถูกต้อง"; } else { if (isset($_FILES['slip']) && $_FILES['slip']['error'] === UPLOAD_ERR_OK) { $upload_res = upload_image($_FILES['slip'], 'slips', 'slip'); if ($upload_res['success']) { $slip_filename = $upload_res['filename']; // Update payment record $stmt_pay = $db->prepare("SELECT id FROM payments WHERE order_id = ? LIMIT 1"); $stmt_pay->execute([$order_id]); $pay_id = $stmt_pay->fetchColumn(); if ($pay_id) { $stmt_upd = $db->prepare("UPDATE payments SET slip_path = ?, status = 'pending' WHERE id = ?"); $stmt_upd->execute([$slip_filename, $pay_id]); } else { $stmt_ins = $db->prepare("INSERT INTO payments (order_id, payment_method, amount, slip_path, status) VALUES (?, 'transfer', ?, ?, 'pending')"); $stmt_ins->execute([$order_id, $order['net_amount'], $slip_filename]); } $db->prepare("UPDATE orders SET status = 'paid' WHERE id = ?")->execute([$order_id]); $success = "อัปโหลดหลักฐานการชำระเงินเรียบร้อยแล้ว เจ้าหน้าที่จะตรวจสอบข้อมูลโดยเร็ว"; // Refresh order header("Location: order_detail.php?id=$order_id&success=1"); exit(); } else { $error = $upload_res['error']; } } else { $error = "กรุณาเลือกไฟล์สลิปการชำระเงิน"; } } } // Fetch order items $stmt_items = $db->prepare(" SELECT oi.*, oi.total as subtotal, p.name as prod_name, p.sku, (SELECT image_path FROM product_images WHERE product_id = p.id ORDER BY is_main DESC, id ASC LIMIT 1) as main_image FROM order_items oi JOIN products p ON oi.product_id = p.id WHERE oi.order_id = ? "); $stmt_items->execute([$order_id]); $items = $stmt_items->fetchAll(); ?> <div class="container my-5"> <div class="d-flex justify-content-between align-items-center mb-4"> <div> <h3 class="fw-bold mb-0"><i class="bi bi-receipt text-primary me-2"></i>รายละเอียดคำสั่งซื้อ #<?php echo sanitize($order['order_no']); ?></h3> <span class="text-muted small">สั่งซื้อเมื่อ: <?php echo format_thai_date($order['created_at'], true); ?></span> </div> <div> <a href="<?php echo base_url('views/orders.php'); ?>" class="btn btn-outline-secondary btn-sm"><i class="bi bi-arrow-left me-1"></i>กลับหน้ารายการ</a> </div> </div> <?php if (!empty($error)): ?> <div class="alert alert-danger mb-4"><?php echo $error; ?></div> <?php endif; ?> <?php if (!empty($success) || isset($_GET['success'])): ?> <div class="alert alert-success mb-4">อัปโหลดสลิปเรียบร้อยแล้ว</div> <?php endif; ?> <div class="row g-4"> <div class="col-lg-8"> <!-- Items Table --> <div class="card border-0 shadow-sm glass-card p-4 mb-4"> <h5 class="fw-bold mb-3"><i class="bi bi-cart-check text-primary me-2"></i>รายการสินค้า</h5> <div class="table-responsive"> <table class="table table-hover align-middle"> <thead> <tr> <th>สินค้า</th> <th>ตัวเลือก</th> <th class="text-center">จำนวน</th> <th class="text-end">ราคา/หน่วย</th> <th class="text-end">รวม</th> </tr> </thead> <tbody> <?php foreach ($items as $it): ?> <tr> <td> <div class="d-flex align-items-center gap-2"> <?php $img_src = !empty($it['main_image']) ? product_image_url($it['main_image']) : base_url('assets/images/no-image.png'); ?> <img src="<?php echo $img_src; ?>" class="rounded border" width="45" height="45" style="object-fit: cover;" onerror="this.onerror=null; this.src='<?php echo base_url('assets/images/no-image.png'); ?>';"> <div> <div class="fw-semibold"><?php echo sanitize($it['prod_name']); ?></div> <small class="text-muted"><?php echo sanitize($it['sku']); ?></small> </div> </div> </td> <td> <small class="text-muted"> <?php echo sanitize($it['color_name'] ? 'สี: ' . $it['color_name'] : ''); ?> <?php echo sanitize($it['size_name'] ? ' | ไซส์: ' . $it['size_name'] : ''); ?> </small> </td> <td class="text-center fw-bold"><?php echo $it['quantity']; ?></td> <td class="text-end"><?php echo format_price($it['price']); ?></td> <td class="text-end fw-bold text-primary"><?php echo format_price($it['subtotal']); ?></td> </tr> <?php endforeach; ?> </tbody> <tfoot> <tr> <th colspan="4" class="text-end">ยอดรวมสุทธิ</th> <th class="text-end text-primary fs-5"><?php echo format_price($order['net_amount']); ?></th> </tr> </tfoot> </table> </div> </div> </div> <div class="col-lg-4"> <!-- Payment & Slip Status Card --> <div class="card border-0 shadow-sm glass-card p-4"> <h5 class="fw-bold mb-3"><i class="bi bi-wallet2 text-primary me-2"></i>การชำระเงิน</h5> <div class="mb-3"> <label class="text-muted small d-block">สถานะคำสั่งซื้อ</label> <span class="badge bg-primary fs-6 px-3 py-2 mt-1"><?php echo sanitize($order['status']); ?></span> </div> <div class="mb-3"> <label class="text-muted small d-block">หลักฐานการโอนเงิน (Slip)</label> <?php if (!empty($order['slip_path'])): ?> <div class="mt-2 text-center"> <img src="<?php echo base_url('uploads/slips/' . sanitize($order['slip_path'])); ?>" class="img-fluid rounded border shadow-sm" style="max-height: 250px; object-fit: contain;"> <a href="<?php echo base_url('uploads/slips/' . sanitize($order['slip_path'])); ?>" target="_blank" class="btn btn-sm btn-outline-primary d-block mt-2"> <i class="bi bi-box-arrow-up-right me-1"></i> ดูรูปเต็ม </a> </div> <?php else: ?> <div class="alert alert-warning py-2 small mt-2">ยังไม่ได้แนบสลิปโอนเงิน</div> <?php endif; ?> </div> <!-- Slip Upload Form --> <form method="POST" enctype="multipart/form-data" class="mt-3"> <input type="hidden" name="csrf_token" value="<?php echo get_csrf_token(); ?>"> <label class="form-label fw-bold small">แนบสลิปชำระเงินใหม่</label> <input type="file" name="slip" class="form-control form-control-sm mb-2" accept="image/jpeg,image/png,image/webp" required> <button type="submit" name="upload_slip" class="btn btn-success btn-sm w-100"> <i class="bi bi-upload me-1"></i> อัปโหลดสลิป </button> </form> </div> </div> </div> </div> <?php require_once __DIR__ . '/../includes/footer.php'; ?>
| ver. 1.4 |
Github
|
.
| PHP 7.4.33 | Generation time: 0.27 |
proxy
|
phpinfo
|
Settings