# UAT Checklist — LPK Laravel

**Proyek:** Refactor LPK → Laravel + Livewire + Tailwind
**Tanggal UAT:** ______________
**Penguji:** ______________ (user) / ______________ (developer)
**Status legend:** ✅ Lulus · ⚠️ Perlu perbaikan · ❌ Gagal

---

## A. Autentikasi & RBAC

| # | Skenario | Hasil | Catatan |
|---|---|---|---|
| A1 | Login admin (admin/admin123) berhasil → dashboard | | |
| A2 | Login user legacy dari `trocon_lpk` berhasil (hash lama) → otomatis bcrypt | | |
| A3 | Password salah → pesan error, tidak login | | |
| A4 | User nonaktif ditolak login | | |
| A5 | Logout → kembali ke halaman login | | |
| A6 | User tanpa otorisasi menu → 403 saat buka URL manual | | |
| A7 | Sidebar hanya menampilkan menu yang diotorisasi | | |
| A8 | Ubah Password (verifikasi lama) berfungsi | | |
| A9 | History login tercatat (login/logout) | | |
| A10 | Dark mode & pencarian menu di sidebar berfungsi | | |

## B. Master & Relasi

| # | Modul | CRUD | Pencarian | Toggle aktif |
|---|---|---|---|---|
| B1 | Pos Biaya | | | |
| B2 | Gudang | | | |
| B3 | Project | | | |
| B4 | Hari Libur | | | |
| B5 | Kota | | | |
| B6 | Jenis Pemakaian | | | |
| B7 | Staff (profil + tabs pendidikan/keluarga/pengalaman/proyek) | | | |
| B8 | Tenaga Kerja | | | |
| B9 | Pemasok | | | |
| B10 | Staff Status | | | |
| B11 | Posisi | | | |

## C. Material

| # | Skenario | Hasil |
|---|---|---|
| C1 | CRUD material (kode unique, harga, min stock) | |
| C2 | Filter jenis/grup + pencarian | |
| C3 | Kolom stok tampil (hijau/kuning/merah) | |
| C4 | CRUD Jenis/Satuan/Tipe/Grup/Merk | |
| C5 | **Upload Material**: unduh template | |
| C6 | Upload xlsx valid → preview → import (create + update by kode) | |
| C7 | Upload dengan baris error → daftar error + unduh file error | |

## D. Pembelian

| # | Skenario | Hasil |
|---|---|---|
| D1 | Buat PR (header + item) | |
| D2 | Buat PO dari PR open (item termuat, harga) | |
| D3 | PR status berubah (ordered) | |
| D4 | Penerimaan (SJ Supplier): pilih PO → terima → **stok masuk** | |
| D5 | PO received qty & status ter-update | |
| D6 | Retur pembelian → **stok keluar** | |
| D7 | Cancel PR/PO | |

## E. Gudang & Stok

| # | Skenario | Hasil |
|---|---|---|
| E1 | Pemakaian Barang → **stok berkurang** | |
| E2 | Retur Material → **stok bertambah** | |
| E3 | Koreksi Stok (+ dan − dengan alasan) | |
| E4 | Stok Opname: muat stok sistem → input fisik → selisih dikoreksi | |
| E5 | Mutasi stok tercatat di ledger (riwayat per item) | |

## F. Transfer & Laporan (INTI)

| # | Skenario | Hasil |
|---|---|---|
| F1 | Buat SPB (dari/ke gudang, lokasi, item) | |
| F2 | **Cetak SPB** rapi | |
| F3 | Material Transfer dari SPB open → **stok keluar asal + masuk tujuan** | |
| F4 | SPB status partial/closed sesuai sisa | |
| F5 | **Cetak Surat Jalan** | |
| F6 | SJ Retur (transfer balik) + cetak | |
| F7 | **Laporan Transfer Barang**: filter tanggal + gudang + jenis | |
| F8 | Laporan **Cetak/PDF** (kop perusahaan, detail item) | |

## G. Solar

| # | Skenario | Hasil |
|---|---|---|
| G1 | Penerimaan Solar → stok solar bertambah | |
| G2 | Pengeluaran Solar (jenis pemakaian, "dipakai untuk") → stok berkurang | |
| G3 | Kartu saldo solar per gudang tampil | |

## H. Payroll & LPK (verifikasi penting!)

| # | Skenario | Hasil |
|---|---|---|
| H1 | CRUD Periode Payroll | |
| H2 | Input absensi manual (NIK + tanggal + jam) | |
| H3 | **Import absensi Excel** (template, validasi NIK) | |
| H4 | **Generate Upah Harian (TK)**: hari kerja benar, THP sesuai ekspektasi | |
| H5 | **Generate UM Staff**: hasil sesuai ekspektasi | |
| H6 | Review grid sebelum simpan (hari, upah, makan, lembur, THP) | |
| H7 | Simpan hasil → tersimpan di payroll | |
| H8 | **Print Detail Upah Harian / UM Staff** | |
| H9 | BKK: input pos biaya, **nomor LPK otomatis** | |
| H10 | Pengeluaran Kas Proyek | |
| H11 | Rekap LPK (filter + cetak) | |
| H12 | **Kwitansi BKK** (terbilang benar, rapi) | |
| H13 | ⚠️ **Kalibrasi THP staff**: bandingkan hasil generate vs slip lama utk 1 periode | |

## I. Utilitas & Keamanan

| # | Skenario | Hasil |
|---|---|---|
| I1 | Register user baru + otorisasi menu | |
| I2 | Otorisasi per menu (tree checkbox) | |
| I3 | User Proyek (scope proyek) | |
| I4 | Mailbox (kirim/balas/tutup tiket) | |
| I5 | Broadcast notifikasi tampil di bell | |
| I6 | Backup DB → unduh file | |
| I7 | Restore dari file backup | |

## J. Performa & Data

| # | Skenario | Hasil |
|---|---|---|
| J1 | Halaman material (5000+ item) responsif | |
| J2 | Halaman absensi/attendances tidak lambat | |
| J3 | Tanggal nol / data NULL tidak memunculkan error | |
| J4 | Pagination semua list berjalan | |

---

## Ringkasan

- Total skenario: ______ · Lulus: ______ · Perlu perbaikan: ______ · Gagal: ______
- **Catatan penting / temuan:**
  - ______________________________________________________________________
- **Keputusan go-live:** ☐ Disetujui ☐ Disetujui dengan catatan ☐ Belum
- Tanda tangan user: ______________ · Tanda tangan developer: ______________
