# Aplikasi Pencatatan Keuangan Sekolah

Aplikasi web berbasis PHP Native (PDO) + MySQL untuk mencatat keuangan sekolah secara umum
(kas, donasi, dana BOS, gaji, operasional, dll) **dan** keuangan SPP/iuran siswa, dengan
laporan ala akuntansi sederhana (buku besar, laporan per kategori, laporan laba rugi).

## Fitur Utama

1. **Dashboard** — saldo saat ini, pemasukan/pengeluaran bulan ini, tunggakan SPP, grafik tren 6 bulan, grafik distribusi pengeluaran.
2. **Master Data**
   - Kategori pemasukan & pengeluaran (umum / SPP)
   - Akun Kas & Bank (multi-akun, dengan saldo berjalan otomatis)
   - Tahun Ajaran
   - Tingkat & Kelas
3. **Data Siswa** — NIS, NISN, kelas, ortu/wali, nominal SPP per siswa (bisa berbeda tiap siswa).
4. **Transaksi**
   - Pemasukan Umum (donasi, dana BOS, dll) — dengan upload bukti.
   - Pengeluaran (gaji, operasional, ATK, dll) — dengan upload bukti.
   - Pembayaran SPP — generate tagihan bulanan otomatis untuk semua siswa aktif, lalu catat pembayaran per siswa (bisa multi-bulan sekaligus), cetak kwitansi otomatis.
5. **Laporan**
   - Buku Besar per akun (saldo berjalan/debit-kredit)
   - Laporan per Kategori (rekap total per kategori pada suatu periode)
   - Laporan Laba Rugi sederhana (surplus/defisit) — siap cetak dengan kop surat & tanda tangan
   - Laporan SPP per Kelas (rekap lunas/belum lunas per kelas)
6. **Pengaturan** — profil sekolah, logo, kop surat, nama kepala sekolah & bendahara (otomatis muncul di laporan & kwitansi).
7. **Manajemen Pengguna** — role admin, bendahara, kepala sekolah.

## Struktur Database (ringkas)

- `users` — akun login
- `pengaturan` — profil sekolah (1 baris)
- `tahun_ajaran`, `tingkat`, `kelas`, `siswa`
- `akun_kas` — sumber dana (kas tunai/bank)
- `kategori` — akun buku besar sederhana (tipe: pemasukan/pengeluaran, kelompok: umum/spp)
- `tagihan_spp` — tagihan SPP per siswa per bulan
- `transaksi` — **buku besar utama**, semua pemasukan & pengeluaran (umum maupun SPP) tercatat di sini

Desain ini sengaja menyatukan semua transaksi (umum + SPP) ke dalam satu tabel `transaksi`
sehingga laporan buku besar, laporan per kategori, dan laporan laba rugi otomatis mencakup
seluruh keuangan sekolah tanpa perlu menggabungkan beberapa tabel terpisah.

## Instalasi di cPanel / Shared Hosting

1. **Buat database MySQL** di cPanel (menu MySQL Databases), contoh: `abdulura_keuangan`,
   beserta user database dan privilege ALL PRIVILEGES.
2. **Import `database.sql`** lewat phpMyAdmin (menu Import) ke database yang sudah dibuat.
   - Catatan: file `database.sql` memiliki statement `CREATE DATABASE` di baris atas — jika
     hosting Anda tidak mengizinkan CREATE DATABASE lewat phpMyAdmin (umum di shared hosting),
     hapus dua baris pertama (`CREATE DATABASE...` dan `USE keuangan_sekolah;`) sebelum import,
     lalu pastikan Anda sudah berada di dalam database yang benar saat import.
3. **Upload seluruh folder project** (semua file & folder dalam paket ini) ke `public_html`
   atau subfolder seperti `public_html/keuangan/` via File Manager / FTP.
4. **Edit `config/database.php`**, sesuaikan:
   ```php
   define('DB_NAME', 'abdulura_keuangan'); // nama database Anda
   define('DB_USER', 'abdulura_admin');    // user database Anda
   define('DB_PASS', 'password_anda');
   ```
   Konvensi cPanel biasanya `namauser_namadb` untuk database dan user.
5. **Set permission folder upload** agar bisa ditulis (biasanya 755 sudah cukup di cPanel):
   - `assets/uploads/bukti/`
   - `assets/uploads/logo/`
6. Akses `https://domainanda.com/keuangan/login.php`
   - Username default: `admin`
   - Password default: `admin123`
   - **Segera ganti password** setelah login pertama lewat menu Pengguna.

## Alur Penggunaan yang Disarankan

1. Login sebagai admin → buka **Pengaturan Sekolah**, isi profil & upload logo.
2. Buka **Tahun Ajaran**, pastikan satu tahun ajaran aktif.
3. Buka **Tingkat & Kelas**, lalu **Data Siswa** — input data siswa beserta nominal SPP masing-masing.
4. Buka **Akun Kas/Bank** — tambahkan akun (misal "Kas Tunai", "Bank BRI") dan saldo awalnya.
5. Cek **Kategori** — sudah tersedia kategori umum bawaan, bisa ditambah/disesuaikan.
6. Setiap awal bulan: buka **Tagihan SPP** → klik **Generate Tagihan Bulanan** untuk membuat
   tagihan otomatis ke semua siswa aktif.
7. Saat siswa membayar SPP: buka **Pembayaran SPP**, cari nama/NIS siswa, centang bulan yang
   dibayar, simpan → kwitansi otomatis tampil untuk dicetak.
8. Untuk pemasukan/pengeluaran non-SPP (donasi, gaji, listrik, dll): gunakan menu
   **Pemasukan Umum** / **Pengeluaran**.
9. Untuk laporan ke kepala sekolah/yayasan: gunakan **Laporan Laba Rugi** atau
   **Laporan per Kategori**, atur rentang tanggal, lalu klik **Cetak**.

## Catatan Teknis

- Stack: PHP Native + PDO, MySQL, Bootstrap 5, DataTables, Chart.js — konsisten dengan
  stack SISMAT dan sistem perpustakaan yang sudah ada.
- Semua input nominal otomatis diformat ribuan (titik) saat mengetik, dan di-unformat
  otomatis saat disimpan ke database.
- Nomor transaksi otomatis dengan format `PM-YYYYMMDD-001` (pemasukan) /
  `PK-YYYYMMDD-001` (pengeluaran).
- Kategori/akun yang sudah dipakai pada transaksi tidak bisa dihapus (hanya bisa
  dinonaktifkan) untuk menjaga integritas data laporan historis.

## Pengembangan Lanjutan (opsional, bisa ditambahkan kemudian)

- Modul anggaran (budget) per kategori per tahun ajaran, dengan perbandingan realisasi vs anggaran.
- Notifikasi Telegram/WhatsApp untuk tunggakan SPP (pola yang sama seperti sistem SPP Admin Anda sebelumnya).
- Export laporan ke Excel/PDF langsung dari halaman laporan.
- Multi-tahun-ajaran filter pada seluruh laporan.
