File manager - Edit - /home/webapp69.cm.in.th/u69319090028/Shop/views/admin/payments/refunds.php
Back
<?php /** * Admin Refunds List * Route: GET /admin/refunds */ $statusOptions = ['all' => 'ทุกสถานะ', 'pending' => 'รอดำเนินการ', 'approved' => 'อนุมัติแล้ว', 'rejected' => 'ปฏิเสธแล้ว', 'refunded' => 'คืนเงินแล้ว']; function refundStatusBadge(string $s): string { switch ($s) { case 'pending': return '<span class="badge bg-warning text-dark">รอดำเนินการ</span>'; case 'approved': return '<span class="badge bg-primary">อนุมัติแล้ว</span>'; case 'rejected': return '<span class="badge bg-danger">ปฏิเสธ</span>'; case 'completed': case 'refunded': return '<span class="badge bg-success">คืนเงินแล้ว</span>'; default: return '<span class="badge bg-light text-dark border">' . e($s) . '</span>'; } } ?> <div class="d-flex justify-content-between align-items-start mb-4"> <div> <h4 class="fw-bold mb-1 text-dark"><i class="bi bi-arrow-return-left me-2 text-primary"></i>คำขอคืนเงิน</h4> <p class="text-muted small mb-0">ตรวจสอบและจัดการคำขอคืนเงินจากลูกค้า</p> </div> </div> <!-- Stats --> <div class="row g-3 mb-4"> <?php $skpis = [ ['label' => 'รอดำเนินการ', 'val' => (int)($stats['pending'] ?? 0), 'icon' => 'clock', 'cls' => 'text-warning'], ['label' => 'อนุมัติแล้ว', 'val' => (int)($stats['approved'] ?? 0), 'icon' => 'check-circle', 'cls' => 'text-primary'], ['label' => 'เสร็จสิ้น', 'val' => (int)($stats['completed'] ?? 0), 'icon' => 'check2-all', 'cls' => 'text-success'], ['label' => 'ยอดคืนรวม', 'val' => '฿' . number_format((float)($stats['total_refunded'] ?? 0), 0), 'icon' => 'cash-stack', 'cls' => 'text-danger'], ]; ?> <?php foreach ($skpis as $k): ?> <div class="col-6 col-md-3"> <div class="card border-0 shadow-sm h-100"> <div class="card-body d-flex align-items-center gap-3 py-3"> <div class="rounded-2 p-2" style="background:#f1f5f9;"> <i class="bi bi-<?= $k['icon'] ?> <?= $k['cls'] ?> fs-5"></i> </div> <div> <div class="fw-bold fs-5 text-dark"><?= $k['val'] ?></div> <div class="text-muted" style="font-size:.75rem;"><?= $k['label'] ?></div> </div> </div> </div> </div> <?php endforeach; ?> </div> <!-- Filter Bar --> <div class="card border-0 shadow-sm mb-3"> <div class="card-body py-2 px-3"> <form method="GET" action="<?= url('/admin/refunds') ?>" class="d-flex flex-wrap gap-2 align-items-end"> <div> <label class="form-label small fw-bold mb-1 text-muted">สถานะ</label> <select name="status" class="form-select form-select-sm" style="min-width:140px;"> <?php foreach ($statusOptions as $val => $lbl): ?> <option value="<?= $val ?>" <?= ($filters['status'] ?? 'all') === $val ? 'selected' : '' ?>><?= $lbl ?></option> <?php endforeach; ?> </select> </div> <div class="flex-grow-1"> <label class="form-label small fw-bold mb-1 text-muted">ค้นหา</label> <input type="text" name="q" class="form-control form-control-sm" placeholder="Order No / ชื่อลูกค้า..." value="<?= e($filters['q'] ?? '') ?>"> </div> <button class="btn btn-primary btn-sm px-3"> <i class="bi bi-search me-1"></i>ค้นหา </button> <?php if (!empty(array_filter($filters))): ?> <a href="<?= url('/admin/refunds') ?>" class="btn btn-outline-secondary btn-sm">ล้าง</a> <?php endif; ?> </form> </div> </div> <!-- Refunds Table --> <div class="card border-0 shadow-sm"> <div class="card-body p-0"> <?php if (empty($items)): ?> <div class="text-center py-5 text-muted"> <i class="bi bi-arrow-return-left fs-2 d-block mb-2"></i> ไม่พบคำขอคืนเงิน </div> <?php else: ?> <div class="table-responsive"> <table class="table align-middle mb-0 small"> <thead class="table-light"> <tr> <th class="ps-3">Order No</th> <th>ลูกค้า</th> <th class="text-end">ยอดคืน</th> <th>เหตุผล</th> <th>สถานะ</th> <th>วันที่ขอ</th> <th class="pe-3"></th> </tr> </thead> <tbody> <?php foreach ($items as $r): ?> <tr> <td class="ps-3"><code class="text-primary fw-bold"><?= e($r['order_no']) ?></code></td> <td> <div class="fw-medium text-dark"><?= e($r['requested_by_name']) ?></div> <div class="text-muted" style="font-size:.72rem;"><?= e($r['requested_by_email']) ?></div> </td> <td class="text-end fw-bold text-danger">฿<?= number_format((float)$r['amount'], 2) ?></td> <td class="text-muted" style="max-width:180px;"> <span class="text-truncate d-block"><?= e($r['reason']) ?></span> </td> <td><?= refundStatusBadge($r['status']) ?></td> <td class="text-muted"><?= date('d/m/y H:i', strtotime($r['created_at'])) ?></td> <td class="pe-3"> <a href="<?= url('/admin/refunds/' . (int)$r['id']) ?>" class="btn btn-outline-primary btn-sm px-2 py-1"> <i class="bi bi-eye"></i> </a> </td> </tr> <?php endforeach; ?> </tbody> </table> </div> <?php if ($totalPages > 1): ?> <div class="px-3 py-2 border-top d-flex justify-content-between align-items-center small text-muted"> <span>แสดง <?= count($items) ?> จาก <?= $total ?> รายการ</span> <div class="d-flex gap-1"> <?php for ($p = 1; $p <= $totalPages; $p++): ?> <?php $url = url('/admin/refunds?' . http_build_query(array_merge($filters, ['page' => $p]))); ?> <a href="<?= $url ?>" class="btn btn-sm <?= $p === $page ? 'btn-primary' : 'btn-outline-secondary' ?>"><?= $p ?></a> <?php endfor; ?> </div> </div> <?php endif; ?> <?php endif; ?> </div> </div>
| ver. 1.4 |
Github
|
.
| PHP 7.4.33 | Generation time: 0.23 |
proxy
|
phpinfo
|
Settings