File manager - Edit - /home/webapp69.cm.in.th/u69319090028/Shop/views/account/orders.php
Back
<div class="cargoo-card"> <div class="cargoo-card-header d-flex justify-content-between align-items-center"> <div> <h5 class="mb-1 fw-bold"><?= __('my_orders') ?></h5> <p class="text-muted small mb-0">ติดตามและตรวจสอบสถานะคำสั่งซื้อของคุณ</p> </div> </div> <!-- Status Filter Tabs --> <div class="px-3 pt-2 border-bottom bg-light"> <ul class="nav nav-pills small gap-1 pb-2"> <li class="nav-item"> <a class="nav-link <?= $currentStatus === 'all' ? 'active' : '' ?>" href="<?= url('/account/orders') ?>">ทั้งหมด</a> </li> <li class="nav-item"> <a class="nav-link <?= $currentStatus === 'pending_payment' ? 'active' : '' ?>" href="<?= url('/account/orders?status=pending_payment') ?>">รอชำระเงิน</a> </li> <li class="nav-item"> <a class="nav-link <?= $currentStatus === 'preparing' ? 'active' : '' ?>" href="<?= url('/account/orders?status=preparing') ?>">กำลังเตรียมจัดส่ง</a> </li> <li class="nav-item"> <a class="nav-link <?= $currentStatus === 'shipping' ? 'active' : '' ?>" href="<?= url('/account/orders?status=shipping') ?>">กำลังจัดส่ง</a> </li> <li class="nav-item"> <a class="nav-link <?= $currentStatus === 'completed' ? 'active' : '' ?>" href="<?= url('/account/orders?status=completed') ?>">สำเร็จ</a> </li> <li class="nav-item"> <a class="nav-link <?= $currentStatus === 'cancelled' ? 'active' : '' ?>" href="<?= url('/account/orders?status=cancelled') ?>">ยกเลิก</a> </li> </ul> </div> <div class="cargoo-card-body p-3"> <?php if (empty($orders)): ?> <div class="text-center py-5"> <i class="bi bi-bag-x text-muted" style="font-size: 3rem;"></i> <h6 class="mt-3 text-muted"><?= __('no_orders_found') ?></h6> <a href="<?= url('/search') ?>" class="btn btn-cargoo-primary btn-sm mt-2 px-4"> <?= __('continue_shopping') ?> </a> </div> <?php else: ?> <div class="d-flex flex-column gap-3"> <?php foreach ($orders as $order): ?> <div class="p-3 border rounded-3 bg-white"> <div class="d-flex flex-column flex-sm-row justify-content-between align-items-sm-center pb-2 mb-2 border-bottom gap-2"> <div class="d-flex align-items-center gap-2"> <i class="bi bi-shop text-primary"></i> <span class="fw-bold text-dark"><?= e($order['store_name']) ?></span> <span class="text-muted small">| หมายเลข: <code><?= e($order['order_no']) ?></code></span> </div> <div> <?php $statusBadge = 'bg-secondary'; $statusText = $order['order_status']; $canCancel = in_array($order['order_status'], ['pending_payment', 'awaiting_verification', 'payment_confirmed', 'preparing'], true); if ($order['order_status'] === 'pending_payment') { if (($order['payment_status'] ?? '') === 'awaiting_verification') { $statusBadge = 'bg-info text-dark'; $statusText = 'รอตรวจสอบสลิป'; } else { $statusBadge = 'bg-warning text-dark'; $statusText = __('status_pending_payment'); } } elseif ($order['order_status'] === 'payment_confirmed') { $statusBadge = 'bg-info-subtle text-info-emphasis'; $statusText = 'ชำระเงินแล้ว (เตรียมจัดส่ง)'; } elseif ($order['order_status'] === 'preparing') { $statusBadge = 'bg-primary-subtle text-primary'; $statusText = __('status_preparing'); } elseif ($order['order_status'] === 'shipping') { $statusBadge = 'bg-primary'; $statusText = __('status_shipping'); } elseif ($order['order_status'] === 'completed') { $statusBadge = 'bg-success'; $statusText = __('status_completed'); } elseif ($order['order_status'] === 'cancelled') { $statusBadge = 'bg-danger'; $statusText = __('status_cancelled'); } ?> <span class="badge <?= $statusBadge ?> px-3 py-1"><?= $statusText ?></span> </div> </div> <div class="d-flex justify-content-between align-items-center py-2"> <div> <h6 class="fw-semibold text-dark mb-1 small text-truncate" style="max-width: 350px;"> <?= e($order['first_item_name'] ?? 'สินค้าในคำสั่งซื้อ') ?> <?php if ((int)$order['total_items'] > 1): ?> <span class="text-muted fw-normal">และสินค้าอื่นๆ อีก <?= (int)$order['total_items'] - 1 ?> รายการ</span> <?php endif; ?> </h6> <small class="text-muted"><i class="bi bi-clock me-1"></i><?= date('d/m/Y H:i', strtotime($order['created_at'])) ?></small> <?php if ($order['order_status'] === 'cancelled' && !empty($order['note'])): ?> <div class="small text-danger mt-1"><i class="bi bi-x-circle me-1"></i><?= e(explode("\n", $order['note'])[0]) ?></div> <?php endif; ?> </div> <div class="text-end"> <span class="small text-muted d-block">ยอดรวมคำสั่งซื้อ:</span> <span class="fw-bold text-primary fs-6">฿<?= number_format((float)$order['total_amount'], 2) ?></span> </div> </div> <div class="d-flex justify-content-end align-items-center gap-2 pt-2 border-top"> <?php if ($canCancel): ?> <button type="button" class="btn btn-outline-danger btn-sm px-3 btn-trigger-cancel" data-order-no="<?= e($order['order_no']) ?>" data-amount="฿<?= number_format((float)$order['total_amount'], 2) ?>" data-is-paid="<?= in_array($order['order_status'], ['payment_confirmed', 'preparing'], true) || in_array(($order['payment_status'] ?? ''), ['confirmed', 'paid'], true) ? '1' : '0' ?>"> <i class="bi bi-x-circle me-1"></i> ยกเลิกคำสั่งซื้อ </button> <?php endif; ?> <a href="<?= url('/account/orders/' . $order['order_no']) ?>" class="btn btn-outline-primary btn-sm px-3"> <i class="bi bi-eye me-1"></i> ดูรายละเอียดคำสั่งซื้อ </a> </div> </div> <?php endforeach; ?> </div> <?php endif; ?> </div> </div> <!-- Dynamic Cancel Order Modal for Orders List --> <div class="modal fade" id="listCancelOrderModal" tabindex="-1" aria-labelledby="listCancelOrderModalLabel" aria-hidden="true"> <div class="modal-dialog modal-dialog-centered"> <div class="modal-content rounded-3 shadow"> <div class="modal-header border-bottom py-3"> <h5 class="modal-title fw-bold text-danger" id="listCancelOrderModalLabel"> <i class="bi bi-exclamation-triangle-fill me-2"></i>ยกเลิกคำสั่งซื้อ <span id="modalOrderNoDisplay"></span> </h5> <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button> </div> <form id="listCancelOrderForm" method="POST" action=""> <?= Security::csrfField() ?> <input type="hidden" name="redirect" value="<?= url('/account/orders') ?>"> <div class="modal-body p-4"> <div id="modalPaidWarning" class="alert alert-warning small mb-3 d-none"> <i class="bi bi-info-circle-fill me-1"></i> <strong>คำสั่งซื้อนี้ได้รับการชำระเงินแล้ว</strong> <div class="mt-1 text-muted">เมื่อคุณยกเลิกคำสั่งซื้อ ระบบจะสร้างคำขอคืนเงิน (Refund) จำนวน <strong id="modalRefundAmount"></strong> ให้เจ้าหน้าที่ตรวจสอบและโอนเงินคืนให้คุณ</div> </div> <div id="modalUnpaidInfo" class="alert alert-secondary small mb-3"> <i class="bi bi-info-circle me-1"></i> คำสั่งซื้อจะถูกยกเลิกทันที และจำนวนสินค้าจะถูกคืนกลับเข้าสู่สต็อก </div> <div class="mb-3"> <label class="form-label small fw-bold text-dark">โปรดเลือกเหตุผลในการยกเลิก <span class="text-danger">*</span></label> <div class="d-flex flex-column gap-2"> <label class="form-check p-2 border rounded-2 bg-light d-flex align-items-center gap-2 cursor-pointer"> <input class="form-check-input ms-1" type="radio" name="cancel_reason_preset" value="ต้องการเปลี่ยนที่อยู่ในการจัดส่ง" checked> <span class="form-check-label small">ต้องการเปลี่ยนที่อยู่ในการจัดส่ง</span> </label> <label class="form-check p-2 border rounded-2 bg-light d-flex align-items-center gap-2 cursor-pointer"> <input class="form-check-input ms-1" type="radio" name="cancel_reason_preset" value="ต้องการเปลี่ยนสินค้าหรือตัวเลือกสินค้า"> <span class="form-check-label small">ต้องการเปลี่ยนสินค้าหรือตัวเลือกสินค้า</span> </label> <label class="form-check p-2 border rounded-2 bg-light d-flex align-items-center gap-2 cursor-pointer"> <input class="form-check-input ms-1" type="radio" name="cancel_reason_preset" value="เปลี่ยนใจ / ไม่ต้องการสินค้านี้แล้ว"> <span class="form-check-label small">เปลี่ยนใจ / ไม่ต้องการสินค้านี้แล้ว</span> </label> <label class="form-check p-2 border rounded-2 bg-light d-flex align-items-center gap-2 cursor-pointer"> <input class="form-check-input ms-1" type="radio" name="cancel_reason_preset" value="สั่งซื้อซ้ำซ้อน"> <span class="form-check-label small">สั่งซื้อซ้ำซ้อน</span> </label> <label class="form-check p-2 border rounded-2 bg-light d-flex align-items-center gap-2 cursor-pointer"> <input class="form-check-input ms-1" type="radio" name="cancel_reason_preset" value="อื่นๆ"> <span class="form-check-label small">อื่นๆ (โปรดระบุรายละเอียดด้านล่าง)</span> </label> </div> </div> <div class="mb-2"> <label for="listCancelCustomReason" class="form-label small fw-bold text-dark">รายละเอียดเพิ่มเติม (ไม่บังคับ)</label> <textarea name="cancel_reason_custom" id="listCancelCustomReason" class="form-control form-control-sm" rows="2" placeholder="ระบุเหตุผลเพิ่มเติม..."></textarea> </div> </div> <div class="modal-footer bg-light py-2 px-4 border-top"> <button type="button" class="btn btn-outline-secondary btn-sm px-3" data-bs-dismiss="modal">ปิดหน้าต่าง</button> <button type="submit" class="btn btn-danger btn-sm px-4 fw-bold"> <i class="bi bi-x-circle me-1"></i>ยืนยันการยกเลิกคำสั่งซื้อ </button> </div> </form> </div> </div> </div> <script> document.addEventListener('DOMContentLoaded', function() { const cancelModalEl = document.getElementById('listCancelOrderModal'); if (!cancelModalEl) return; const modal = new bootstrap.Modal(cancelModalEl); const form = document.getElementById('listCancelOrderForm'); const orderNoDisplay = document.getElementById('modalOrderNoDisplay'); const paidWarning = document.getElementById('modalPaidWarning'); const unpaidInfo = document.getElementById('modalUnpaidInfo'); const refundAmount = document.getElementById('modalRefundAmount'); document.querySelectorAll('.btn-trigger-cancel').forEach(btn => { btn.addEventListener('click', function() { const orderNo = this.getAttribute('data-order-no'); const amount = this.getAttribute('data-amount'); const isPaid = this.getAttribute('data-is-paid') === '1'; form.action = '<?= url('/account/orders/') ?>' + encodeURIComponent(orderNo) + '/cancel'; orderNoDisplay.textContent = '#' + orderNo; if (isPaid) { paidWarning.classList.remove('d-none'); unpaidInfo.classList.add('d-none'); refundAmount.textContent = amount; } else { paidWarning.classList.add('d-none'); unpaidInfo.classList.remove('d-none'); } modal.show(); }); }); }); </script>
| ver. 1.4 |
Github
|
.
| PHP 7.4.33 | Generation time: 0.24 |
proxy
|
phpinfo
|
Settings