File manager - Edit - /home/webtrixia/mynetronix.webtrixia.com/admin/payments.php
Back
<?php require_once __DIR__ . '/../includes/config.php'; require_once __DIR__ . '/../includes/db.php'; require_once __DIR__ . '/../includes/auth.php'; require_once __DIR__ . '/../includes/layout.php'; require_admin(); $msg = ''; // Manual mark as paid if (isset($_GET['mark_paid']) && is_numeric($_GET['mark_paid'])) { db()->prepare("UPDATE payments SET status='paid', paid_at=NOW() WHERE id=?")->execute([(int)$_GET['mark_paid']]); db()->prepare("UPDATE invoices SET paid=1 WHERE payment_id=?")->execute([(int)$_GET['mark_paid']]); $msg = 'Платено е маркирано ръчно.'; } $filter = $_GET['status'] ?? ''; if ($filter) { $st = db()->prepare("SELECT p.*, c.name, c.client_number FROM payments p JOIN clients c ON c.id=p.client_id WHERE p.status=? ORDER BY p.created_at DESC"); $st->execute([$filter]); } else { $st = db()->query("SELECT p.*, c.name, c.client_number FROM payments p JOIN clients c ON c.id=p.client_id ORDER BY p.created_at DESC"); } $payments = $st->fetchAll(); $total_paid = db()->query("SELECT COALESCE(SUM(amount_bgn),0) FROM payments WHERE status='paid'")->fetchColumn(); $month_paid = db()->query("SELECT COALESCE(SUM(amount_bgn),0) FROM payments WHERE status='paid' AND MONTH(paid_at)=MONTH(NOW()) AND YEAR(paid_at)=YEAR(NOW())")->fetchColumn(); page_header('Плащания', true); ?> <div class="page-title">💳 Плащания</div> <?php if ($msg): ?><div class="alert alert-success"><?= htmlspecialchars($msg) ?></div><?php endif; ?> <div class="stats-grid" style="margin-bottom:16px"> <div class="stat-box"> <div class="stat-icon green">💶</div> <div> <div class="stat-val"><?= number_format($total_paid/BGN_EUR,2) ?> €</div> <div class="stat-lbl">Общо приходи</div> </div> </div> <div class="stat-box"> <div class="stat-icon blue">📅</div> <div> <div class="stat-val"><?= number_format($month_paid/BGN_EUR,2) ?> €</div> <div class="stat-lbl">Приход този месец</div> </div> </div> </div> <div class="card"> <div class="card-header dark">📋 Всички плащания</div> <div class="card-body" style="padding:14px 14px 0"> <div style="display:flex;gap:8px;flex-wrap:wrap;margin-bottom:14px"> <a href="?" class="btn btn-sm <?= !$filter?'btn-primary':'btn-outline' ?>">Всички</a> <a href="?status=paid" class="btn btn-sm <?= $filter==='paid' ?'btn-success':'btn-outline' ?>">✅ Платени</a> <a href="?status=pending" class="btn btn-sm <?= $filter==='pending'?'btn-blue' :'btn-outline' ?>">⏳ Чакащи</a> <a href="?status=denied" class="btn btn-sm <?= $filter==='denied' ?'btn-danger' :'btn-outline' ?>">❌ Отказани</a> </div> </div> <div class="card-body" style="padding:0"> <?php if ($payments): ?> <table class="tbl"> <thead> <tr><th>Клиент</th><th>Фактура №</th><th>Сума</th><th>Статус</th><th>Дата</th><th>Платено на</th><th>Действия</th></tr> </thead> <tbody> <?php foreach ($payments as $p): ?> <tr> <td> <strong><?= htmlspecialchars($p['name']) ?></strong><br> <small style="color:#888"><?= $p['client_number'] ?></small> </td> <td style="font-size:12px"><?= htmlspecialchars($p['invoice_id']) ?></td> <td> <strong><?= number_format($p['amount_eur'],2) ?> €</strong><br> <small><?= number_format($p['amount_bgn'],2) ?> лв.</small> </td> <td><span class="badge badge-<?= $p['status'] ?>"><?= $p['status'] ?></span></td> <td style="font-size:12px"><?= $p['created_at'] ?></td> <td style="font-size:12px"><?= $p['paid_at'] ?: '—' ?></td> <td> <?php if ($p['status'] !== 'paid'): ?> <a href="?mark_paid=<?= $p['id'] ?>&<?= $filter?'status='.$filter:'' ?>" class="btn btn-sm btn-success" onclick="return confirm('Маркирай като платено?')">✅ Плащане</a> <?php endif; ?> </td> </tr> <?php endforeach; ?> </tbody> </table> <?php else: ?> <div class="empty-state"><div class="empty-icon">💳</div><p>Няма плащания</p></div> <?php endif; ?> </div> </div> <?php page_footer(); ?>
| ver. 1.4 |
Github
|
.
| PHP 8.2.31 | Generation time: 0.05 |
proxy
|
phpinfo
|
Settings