# SUPERAPP ACADEMY V19.1 - PERBAIKAN TAMPILAN DAN HARGA

## Perubahan

- Panel admin kini **memanfaatkan lebar yang tersedia** di kanan sidebar. Penyebab V19: `.wrap` menetapkan `width:min(1200px,100%)` dan memusatkan halaman.
- Daftar manfaat dan pengecualian (✓/✕) katalog dan detail kini **tertutup awalnya**, dengan tombol untuk membuka/menutup tanpa JavaScript (`<details>`).
- Unggah dan pratinjau sampul untuk semua program lewat halaman Foto & Fasilitas: `/panel-admin/katalog-profil/exam/ID`, `/course/ID`, `/material/ID`, `/product/ID`. Tombol unggah ada pada daftar program, detail dan daftar penjualan.
- Ukuran foto **disarankan 1200×675 piksel (16:9)**, minimum 320×180, maksimal 4MB, JPG/PNG/WebP.
- Tambahan **harga normal/harga coret manual**. Hanya ditampilkan bila lebih tinggi dari harga jual. Harga pembayaran yang sebenarnya tidak berubah.
- Produk bundel reguler juga mendukung `compare_price` lama pada tabel products; bila harga normal katalog diisi, sistem mengutamakannya.

## Sangat Penting: Database

**Jika situs Anda sudah V19 dan sudah menjalankan UPGRADE_V18_KE_V19.sql:**
1. Backup database melalui phpMyAdmin.
2. Impor `database/UPGRADE_V19_KE_V19_1.sql` satu kali saja (menambah kolom original_price).
3. Timpa file dengan ZIP, kecuali `.env` dan folder upload pengguna.

**Jika situs Anda masih V18:**
1. Backup database.
2. Gunakan `database/UPGRADE_V18_KE_V19.sql` dari ZIP **V19.1 ini**; sudah mencakup harga coret, tidak perlu menjalankan `UPGRADE_V19_KE_V19_1.sql` lagi.
3. Timpa source, pertahankan `.env` dan folder upload.

**Instalasi baru dan database kosong:** Gunakan `database/IMPORT_SEKALI.sql` dari ZIP V19.1 satu kali. JANGAN jalankan pada database yang telah berisi data.

**Jangan menjalankan dua SQL upgrade tersebut sekaligus:** Jika `original_price` sudah ada dan `ALTER TABLE` dijalankan lagi, MySQL mengembalikan duplicate column. Cek di phpMyAdmin: `SHOW COLUMNS FROM catalog_profiles LIKE 'original_price';`.

## Penggunaan
1. Masuk panel admin, buka daftar Quiz/Tryout, Materi, Kursus & Kelas, atau Penjualan.
2. Pilih program, tekan **Unggah Sampul / Foto, Harga Coret & Fasilitas**.
3. Upload JPG/PNG/WebP horizontal 1200×675, isi harga normal yang *benar*, serta daftar manfaat dan batasan.
4. Simpan. Cek beranda, katalog dan halaman detail. Coba buka/tutup fasilitas.
5. Setelah mengubah berkas, lakukan hard refresh browser (Ctrl+F5) atau kosongkan cache publik melalui Pengaturan → Cache.

## Kehati-hatian
- Harga coret tidak dikarang sistem. Untuk harga gratis, harga normal tidak ditampilkan sebagai diskon otomatis.
- Untuk harga paket member, harga normal bersifat referensi yang admin masukkan. Tinjau satu per satu tier agar tidak menyesatkan.
- Uji semua alur pada staging: login Google, katalog, foto, keranjang, persetujuan checkout, pembayaran, dan admin. Validasi produksi nyata di hosting belum dilakukan.
- Upload foto dapat gagal jika folder `public/uploads/catalog` tidak dapat ditulis oleh PHP. Periksa permission folder 755/775 sesuai user hosting.
