135 lines
5.6 KiB
PHP
135 lines
5.6 KiB
PHP
<?php
|
|
require_once __DIR__ . '/layout_header.php';
|
|
$db = db();
|
|
|
|
$message = '';
|
|
|
|
// Handle Delete
|
|
if (isset($_GET['delete'])) {
|
|
$id = (int)$_GET['delete'];
|
|
$db->prepare("DELETE FROM pengeluaran WHERE id = ?")->execute([$id]);
|
|
$message = '<div class="alert alert-success">Catatan pengeluaran berhasil dihapus.</div>';
|
|
}
|
|
|
|
// Handle Add
|
|
if ($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['save_pengeluaran'])) {
|
|
$jenis_iuran_id = $_POST['jenis_iuran_id'] ?: null;
|
|
$kategori = $_POST['kategori'];
|
|
$jumlah = $_POST['jumlah'];
|
|
$tanggal = $_POST['tanggal'];
|
|
$keterangan = $_POST['keterangan'];
|
|
|
|
$stmt = $db->prepare("INSERT INTO pengeluaran (jenis_iuran_id, kategori, jumlah, tanggal, keterangan) VALUES (?, ?, ?, ?, ?)");
|
|
$stmt->execute([$jenis_iuran_id, $kategori, $jumlah, $tanggal, $keterangan]);
|
|
$message = '<div class="alert alert-success">Pengeluaran berhasil dicatat.</div>';
|
|
}
|
|
|
|
// Fetch lists
|
|
$iuran_list = $db->query("SELECT * FROM jenis_iuran ORDER BY nama ASC")->fetchAll();
|
|
$pengeluaran_list = $db->query("
|
|
SELECT e.*, j.nama as nama_iuran
|
|
FROM pengeluaran e
|
|
LEFT JOIN jenis_iuran j ON e.jenis_iuran_id = j.id
|
|
ORDER BY e.tanggal DESC, e.id DESC
|
|
")->fetchAll();
|
|
?>
|
|
|
|
<div class="top-bar">
|
|
<h1 class="h3 fw-bold m-0">Pengeluaran Kas</h1>
|
|
<button class="btn btn-primary" data-bs-toggle="modal" data-bs-target="#keluarModal">
|
|
<i class="bi bi-plus-lg"></i> Catat Pengeluaran
|
|
</button>
|
|
</div>
|
|
|
|
<?= $message ?>
|
|
|
|
<div class="card">
|
|
<div class="table-responsive">
|
|
<table class="table table-hover align-middle">
|
|
<thead>
|
|
<tr>
|
|
<th>Tanggal</th>
|
|
<th>Kategori / Keterangan</th>
|
|
<th>Sumber Dana</th>
|
|
<th>Jumlah</th>
|
|
<th class="text-end">Aksi</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<?php foreach ($pengeluaran_list as $e): ?>
|
|
<tr>
|
|
<td><?= date('d/m/Y', strtotime($e['tanggal'])) ?></td>
|
|
<td>
|
|
<div class="fw-bold"><?= htmlspecialchars($e['kategori']) ?></div>
|
|
<div class="small text-muted"><?= htmlspecialchars($e['keterangan']) ?></div>
|
|
</td>
|
|
<td>
|
|
<?php if ($e['nama_iuran']): ?>
|
|
<span class="badge bg-info text-dark">Iuran: <?= htmlspecialchars($e['nama_iuran']) ?></span>
|
|
<?php else: ?>
|
|
<span class="badge bg-secondary">Kas Umum</span>
|
|
<?php endif; ?>
|
|
</td>
|
|
<td class="text-danger fw-bold">-Rp <?= number_format($e['jumlah'], 0, ',', '.') ?></td>
|
|
<td class="text-end">
|
|
<a href="?delete=<?= $e['id'] ?>" class="btn btn-sm btn-outline-danger" onclick="return confirm('Yakin ingin menghapus?')">
|
|
<i class="bi bi-trash"></i>
|
|
</a>
|
|
</td>
|
|
</tr>
|
|
<?php endforeach; ?>
|
|
<?php if (empty($pengeluaran_list)): ?>
|
|
<tr>
|
|
<td colspan="5" class="text-center py-4 text-muted">Belum ada data pengeluaran.</td>
|
|
</tr>
|
|
<?php endif; ?>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Modal -->
|
|
<div class="modal fade" id="keluarModal" tabindex="-1">
|
|
<div class="modal-dialog">
|
|
<form method="POST" class="modal-content">
|
|
<div class="modal-header">
|
|
<h5 class="modal-title">Catat Pengeluaran Baru</h5>
|
|
<button type="button" class="btn-close" data-bs-dismiss="modal"></button>
|
|
</div>
|
|
<div class="modal-body">
|
|
<div class="mb-3">
|
|
<label class="form-label">Kategori Pengeluaran</label>
|
|
<input type="text" name="kategori" class="form-control" placeholder="Contoh: Perbaikan Lampu Jalan" required>
|
|
</div>
|
|
<div class="mb-3">
|
|
<label class="form-label">Sumber Dana (Ambil dari Iuran?)</label>
|
|
<select name="jenis_iuran_id" class="form-select">
|
|
<option value="">-- Kas Umum (Semua) --</option>
|
|
<?php foreach ($iuran_list as $i): ?>
|
|
<option value="<?= $i['id'] ?>"><?= htmlspecialchars($i['nama']) ?></option>
|
|
<?php endforeach; ?>
|
|
</select>
|
|
</div>
|
|
<div class="mb-3">
|
|
<label class="form-label">Jumlah Pengeluaran (Rp)</label>
|
|
<input type="number" name="jumlah" class="form-control" required>
|
|
</div>
|
|
<div class="mb-3">
|
|
<label class="form-label">Tanggal</label>
|
|
<input type="date" name="tanggal" class="form-control" value="<?= date('Y-m-d') ?>" required>
|
|
</div>
|
|
<div class="mb-3">
|
|
<label class="form-label">Keterangan Tambahan</label>
|
|
<textarea name="keterangan" class="form-control" rows="3"></textarea>
|
|
</div>
|
|
</div>
|
|
<div class="modal-footer">
|
|
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Batal</button>
|
|
<button type="submit" name="save_pengeluaran" class="btn btn-primary">Simpan Pengeluaran</button>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
</div>
|
|
|
|
<?php require_once __DIR__ . '/layout_footer.php'; ?>
|